Programovanie

Pešia prehliadka JavaBeans

Predchádzajúca 1 2 Strana 2 Strana 2 z 2

Čo je JavaBeans a čo robí

JavaBeans nie je produktové, programové alebo vývojové prostredie. Je to jadro balíka Java (java.beans), ktoré môže fazuľa použiť na poskytnutie rozšírenej funkčnosti, a dokument (ďalej len Špecifikácia JavaBeans), ktorý popisuje spôsob použitia tried a rozhraní v java.beans balík na implementáciu „Funkcie fazule“. Špecifikácia triedy je súčasťou základného vydania Java 1.1, takže na jej použitie nemusí byť nainštalovaný žiadny ďalší softvér. Pridanie fazule vyžadovalo malú zmenu v jazyku Java per se, aj keď do základného vydania bolo pridaných niekoľko nových a veľmi potrebných rozhraní API na podporu funkcií fazule. Čítanie špecifikácie môže byť informatívne, ale uspávajúce. Našťastie je to voliteľné, ak už viete, ako a prečo používať balík JavaBeans. Možno ste už fazule porozumeli prečítaním zábavnej a poučnej série článkov o JavaBeans v jazyku JavaWorld, napríklad.

JavaBeans premieňa triedy na softvérové ​​komponenty tým, že poskytuje niekoľko nových funkcií. Niektoré z týchto funkcií sú špecifické pre fazuľa. Ostatné, napríklad serializácia, sa môžu prihlásiť na akýkoľvek triedy, fazuľa alebo inak, ale sú rozhodujúce pre pochopenie a použitie fazule.

Softvérové ​​komponenty majú vlastnosti, čo sú atribúty objektu. Prispôsobenie je proces konfigurácie Beanu pre konkrétnu úlohu. Nové vybavovanie udalostí schéma v jazyku Java 1.1 bola čiastočne vytvorená na uľahčenie komunikácie medzi fazuľami. Fazuľa môže byť pitvaná IDE alebo inými triedami prostredníctvom procesu nazývaného introspekcia. Fazuľa môže byť vytrval (t.j. na pokračovanie) do bajtových tokov na prenos alebo ukladanie a trvalé fazule môžu byť zabalený do „súborov JAR“ na uľahčenie sťahovania a prístupu. Nakoniec, fazuľa bola navrhnutá tak, aby spolupracovať ľahko pomocou starších technológií komponentov, ako sú ActiveX a LiveConnect, a podieľať sa na transakciách so systémami Object Request Broker, ako je CORBA.

Pozrime sa na každú z týchto schopností trochu hlbšie.

Vlastnosti a prispôsobenie

Vlastnosti, ako je uvedené vyššie, sú atribútmi fazule. Vizuálne vlastnosti môžu zahŕňať farbu alebo veľkosť obrazovky. Ostatné vlastnosti nemusia mať žiadne vizuálne znázornenie: objekt BrowserHistory Bean môže mať napríklad vlastnosť určujúcu maximálny počet adries URL na uloženie. Fazuľa vystaviť stavač a getter metódy (nazývané „prístupové metódy“) pre svoje vlastnosti, čo umožňuje iným triedam alebo IDE manipulovať s ich stavom. Volá sa proces nastavenia vlastností fazule v čase návrhu alebo behu prispôsobenie.

Vývojár má veľkú kontrolu nad prístupom a úpravami vlastností fazule. Pre jednoduchá vlastnosť, vývojár napíše metódu nazvanú setProperty () a volal ďalší getProperty ().

Tu ste by videli ste applet, ale z nejakého dôvodu nemôžete.

Stĺpcový graf

Napríklad ak používate prehliadač s podporou Java, vľavo uvidíte applet, ktorý používa malú triedu s názvom Stĺpcový graf. The Stĺpcový graf je farebná lišta medzi dvoma tlačidlami. Stĺpcový graf chýba jedna vec, aby sa stal Beanom: neimplementuje rozhranie java.io. Serializovateľné (pretože väčšina prehľadávačov zatiaľ nespracováva jazyk Java 1.1, a preto by vzorový applet zlyhal.)

S výnimkou možnosti Serializovateľnosti, Stĺpcový graf je jednoduchá fazuľa s niekoľkými metódami. Má void setPercent (int pct), ktorá zaplavuje dno pct percent stĺpca s červenou farbou. Metóda int getPercent () vráti aktuálne percento uložené v Beanovi (toto je Beanov stav). The setPercent () metóda tiež volá premaľovať () ak by to zmenilo percento, aby vizuálne znázornenie objektu zostalo aktuálne.

Hovorí kód appletu setPercent (getPercent () + 10) keď +10% Kliknutím na tlačidlo spôsobíte Stĺpcový graf na zvýšenie jeho percenta (ak je <100%). Percento je príkladom a Majetok fazule, s metódami setter a getter pomenovanými v súlade so špecifikáciou JavaBeans. Keď bude táto séria pokračovať, budeme túto pokornú maličkosť transformovať Stĺpcový graf do užitočnej softvérovej súčasti, ktorú je možné zapojiť do rôznych aplikácií.

Hodnota an indexovaná vlastnosť je pole. Metódy prístupu indexovaných vlastností prijímajú a vracajú pole hodnôt namiesto skalárov. Metódy prístupového zariadenia môžu nahlásenie chybových stavov vyvolať zaškrtnuté výnimky.

Niekedy je užitočné, aby k akcii došlo, keď sa zmení určitá vlastnosť objektu. Viazané vlastnosti spôsobí, že udalosti sa budú posielať na iné objekty, keď sa zmení hodnota vlastnosti, čo pravdepodobne umožní prijímateľovi vykonať nejakú akciu. Takže SpreadSheet Bean môže byť nakonfigurovaný tak, aby povedal PieChart Bean, aby sa prekreslil vždy, keď sa zmenia údaje tabuľky.

Niektoré hodnoty nehnuteľností sú často nelegálne na základe stavu ostatných fazúľ. Na ich počúvanie je možné nastaviť fazuľu obmedzené vlastnosti ďalších fazúľ a zmena veta sa jej nepáči. Napríklad ControlRodArray Bean jadrového reaktora môže chcieť prekážať niekomu, kto sa pokúša zmeniť stav DrainReactorCorePump Bean na ON, ak sú regulačné tyče vytiahnuté. (Toto doma neskúšajte. JavaBeans by pre takéto aplikácie nemal používať nikto len ešte.)

Keď vývojár spája Beans za účelom vytvorenia aplikácie, IDE môže predstaviť hárok vlastností obsahujúci všetky vlastnosti Beans a ich aktuálne hodnoty. (Hárok s vlastnosťami je dialógové okno, ktoré sa používa na nastavenie a / alebo prezeranie vlastností, napríklad toho, čo získate výberom možnosti Možnosti ... v ponuke.) Vývojár nastaví vlastnosti graficky, čo IDE prevedie do volaní metódami nastavenia fazule, zmena stavu fazule. Toto prispôsobuje fazuľa pre konkrétnu aplikáciu.

Používanie zoznamov vlastností nie je vždy najlepším spôsobom na prispôsobenie fazule. Niektoré fazule majú príliš zložitý stav na to, aby sa s nimi dalo ľahko manipulovať týmto spôsobom. Ostatné fazule by boli jednoducho chladnejšie, keby existoval intuitívnejší spôsob ich nastavenia. Predstavte si chudobného manažéra, ktorý sa chce jednoducho pozrieť na správy o predaji a musí zistiť, čo má napísať do textového poľa „Vzdialený zdroj údajov ODBC“ v zozname vlastností. Nebolo by chladnejšie, keby mohla jednoducho pretiahnuť ikonu DataSource Bean (samozrejme prispôsobenú štítkom „Sales Data“) na DataConnection Bean, čím by ju nakonfigurovala automaticky? Vývojár Beans môže vložiť hárok vlastností do samotného Beanu a IDE potom použije tento „prispôsobovač“ na prispôsobenie Beanu.

Relevantné triedy pre manipuláciu s vlastnosťami a prispôsobenie sú v java.beans balíček.

Riešenie udalostí

Celá táto interakcia medzi fazuľami predpokladá určitý spôsob ich komunikácie. JDK 1.1 definuje nový model udalosti ktoré triedy (nielen fazuľa!) používajú na komunikáciu. Tento nový model udalosti sa v skutočnosti dostal do jedného z najbežnejšie používaných balíkov Java: java.awt!

V novom modeli udalosti trieda zaregistruje záujem o aktivity inej triedy prostredníctvom a rozhranie poslucháča. V skutočnosti cieľ objekt (zainteresovaná strana) povie zdroj objekt (objekt záujmu): „Dajte mi vedieť vždy, keď sa stane čosi.“ Keď dôjde k tomu a tak, zdrojový objekt „vystrelí“ udalosť na cieľ vyvolaním obsluhy udalosti cieľa s podtriedou EventObject ako argument.

Udalosti sa dajú použiť na implementáciu viazaných a obmedzených vlastností. V príklade PieChart a SpreadSheet vyššie PieChart „registruje“ záujem o akúkoľvek zmenu v SpreadSheet (povedzme) DataList nehnuteľnosť. Keď SpreadSheet zmení svoje DataList majetok, prechádza a DataListChangedEvent (podtrieda z EventObject) s uvedením toho, čo sa zmenilo, na metódu obsluhy udalostí každého zainteresovaného poslucháča. Cieľ (PieChart) potom danú udalosť preskúma a urobí príslušné kroky.

Príklad jadrového reaktora funguje podobne; ale v tom prípade terč veta zmenu udelením výnimky. Svet je tak zachránený pred rozsiahlym rádioaktívnym zničením.

The EventObject triedu je možné rozšíriť a vytvoriť užívateľom definované udalosti. Triedy môžu teraz definovať a používať nové typy udalostí na vzájomné odosielanie správ. To znamená, že fazuľa bežiaca vo vnútri toho istého kontajnera môže komunikovať prenášaním správ okolo. To pomáha odpojiť závislosti medzi objektmi, o ktorých vieme, že je veľmi dobrá vec.

Užívateľom definované (a ďalšie) udalosti sú odvodené z triedy java.util.EventObject.

Introspekcia

Trochu zvláštny výraz introspekcia je Java-speak pre proces programovej analýzy verejných metód a členov triedy. Tento proces sa tiež niekedy nazýva objav. Nové odraz mechanizmus v jadre Java, ktorý dokáže členiť objekt a vrátiť popis jeho obsahu, umožňuje introspekciu. (Aj keď Java môže byť reflexívna, dokonca aj introspektívna, omphaloskepsis stále nie je súčasťou základnej distribúcie.)

Už sme narazili na jednu aplikáciu tejto schopnosti. Vyššie sme popísali IDE, ktoré by mohlo zostaviť zoznam vlastností Bean, ktoré sa majú predstaviť vývojárovi. Ako môže IDE vedieť, aké vlastnosti má fazuľa? IDE zistí vlastnosti Beanu jedným z dvoch spôsobov: požiadaním Beanu o popis jeho vlastností alebo disekciou Beana jeho introspekciou.

Typické IDE začne tým, že požiada Bean o objekt BeanInfo, ktorý okrem iného popisuje vlastnosti Bean. IDE potom použije objekt BeanInfo na zostavenie tabuľky vlastností. (To je za predpokladu, že Bean neposkytuje vlastný prispôsobiteľ.) Ak Bean nevie, ako vrátiť objekt BeanInfo, IDE potom Beana prezrie a prehľadá zoznam metód s názvami začínajúcimi na nastaviť a dostať. Predpokladá (podľa konvencie), že tieto metódy sú prístupovými právami k vlastnostiam, a vytvorí nový hárok vlastností na základe existujúcich prístupových metód a typov argumentov, ktoré tieto metódy používajú. Pokiaľ teda IDE nájde metódy ako setColor (Color), Farba getColor (), setSize (veľkosť)a Veľkosť getSize (), potom sa vytvorí zoznam vlastností s vlastnosťami Farba a Veľkosťa vhodne napísané widgety na ich nastavenie.

To znamená, že ak vývojár jednoducho dodržiava konvencie pre pomenovanie prístupových metód, IDE môže automaticky určiť, ako vytvoriť hárok vlastností prispôsobenia pre komponent.

Reflexný mechanizmus, ktorý vykonáva introspekciu, je v novom jazykovom balíku java.lang.reflect.

Perzistencia a balenie

Často je užitočné objekt „lyofilizovať“ prevedením jeho stavu na súbor údajov, ktoré sa zbalia na neskoršie použitie - alebo prenesú cez sieť na ďalšie spracovanie. Tento proces sa nazýva serializácia a je novou funkciou jadra Java.

Jedným z najjednoduchších spôsobov použitia serializácie je uloženie stavu prispôsobeného objektu Bean, aby bolo možné správne nastaviť novo vytvorené vlastnosti objektu Bean za behu programu.

Serializácia je tiež základom technológie komponentov, čo umožňuje schémy distribuovaného spracovania, ako napríklad CORBA. Ak objekt nemá lokálne informácie, ktoré potrebuje na vykonanie svojej úlohy, môže sa odoslať sprostredkovateľovi požiadaviek, ktorý objekt serializuje a odošle inde na spracovanie. Na vzdialenom konci sa objekt rekonštituuje a vykoná sa pôvodne požadovaná operácia. Toto je tiež spôsob, ako realizovať vyrovnávanie zaťaženia (pre drahé úlohy, to znamená: serializácia a deserializácia často nie sú lacné).

Kde chováte takto zmrazené „naložené“ skupinu mrazom sušených bôbov? Prečo, samozrejme, v JAR! Špecifikácia JavaBeans popisuje a JAR súbor ako štruktúrovaný súbor ZIP obsahujúci viac serializovaných objektov, dokumentáciu, obrázky, súbory tried atď. s príponou prejav ktorý popisuje, čo je v JAR. Súbor JAR, ktorý obsahuje veľa komprimovaných malých súborov, je možné stiahnuť naraz a dekomprimovať na konci klienta, čo umožňuje efektívnejšie sťahovanie appletu (napríklad). (JAR je zjavne hra na Unixe decht formát súboru.)

The java.io balík poskytuje serializáciu objektov. Špecifikácia JavaBeans popisuje formát súborov JAR.

Interoperácia

Niektoré vtipy kedysi hovorili, že na štandardoch je pekné to, že je z čoho vyberať. Technológie komponentov nie sú výnimkou. Existuje veľa existujúcich systémov založených na OLE (alebo jeho najnovšej inkarnácii, ActiveX), OpenDoc a LiveConnect. JavaBeans bol navrhnutý tak, aby (aspoň nakoniec) spolupracoval s týmito ďalšími komponentovými technológiami.

Nie je reálne očakávať, že vývojári opustia existujúce investície do iných technológií a znova implementujú všetko v prostredí Java. Od vydania Java 1.1 sú k dispozícii prvé „mostové“ súpravy Beans / ActiveX, ktoré vývojárom umožňujú bezproblémové prepojenie komponentov Beans a ActiveX do rovnakej aplikácie. Rozhranie Java IDL, ktoré umožní triedam Java pracovať s existujúcimi systémami CORBA, má vyjsť tento rok.

Aj keď most Beans / ActiveX a Java IDL nie sú súčasťou štandardnej distribúcie JavaBeans, završujú možnosti JavaBeans ako otvorenú technológiu pre prenosný komponentný softvér.

Záver

Prešli sme veľa pôdy. V tomto článku ste sa dozvedeli, čo sú softvérové ​​komponenty a prečo sú cenné. Potom ste sa dozvedeli o rôznych vlastnostiach JavaBeans, vrátane vlastností, prispôsobenia, udalostí, introspekcie, perzistencie, balenia a spolupráce so starými systémami komponentov.

V nasledujúcom článku v tejto sérii vám ukážeme, ako začať používať JavaBeans, a podrobne sa pozrieme na vlastnosti fazule: ako fungujú a ako je možné fazuľa prispôsobiť. Postupne si rozoberieme nové základné funkcie Java, ktoré umožňujú fazuľa. Budúce články v tejto sérii sa budú venovať podrobnostiam tém, o ktorých sme tento mesiac diskutovali.

Mark Johnson má titul BS v odbore počítačov a elektrotechniky na Purdue University (1986). Má 15 rokov skúseností s programovaním v jazyku C a dva roky v jazyku C ++. Je fanatickým vyznávačom prístupu Design Pattern v objektovo orientovanej architektúre, softvérových komponentov teoreticky a JavaBeans v praxi. V posledných rokoch pracoval pre spoločnosti Kodak, Booz-Allen a Hamilton a EDS v Mexico City. Vyvíjal databázové aplikácie Oracle a Informix pre mexický federálny volebný inštitút a pre mexické colné úrady. Posledný rok strávil prácou v spoločnosti NETdelivery, ktorá je internetovým startupom v Bouldere v štáte CO. Mark je unixový programátor zafarbený na vlne a v jazyku Java vidí chýbajúce prepojenie medzi všadeprítomnými systémami klientských počítačov a otvorenými, distribuovanými, a škálovateľné podnikové rozhrania. V súčasnosti pracuje ako dizajnér a vývojár spoločnosti Object Products vo Fort Collins, CO.

Získajte viac informácií o tejto téme

  • Vynikajúce porovnanie JavaBeans a ActiveX nájdete v publikácii Merlin Hughes JavaWorld titulný príbeh, „JavaBeans a ActiveX idú hlava na hlave“

    //www.javaworld.com/javaworld/jw-03-1997/jw-03-avb-tech.html

  • Sun Microsystems spravuje webovú stránku pre JavaBeans. Na tomto webe si môžete stiahnuť najnovšiu BDK (Beans Developer's Kit), prečítať si špecifikáciu JavaBeans, surfovať v online návode a dozvedieť sa viac o najnovších informáciách o Beans. //java.sun.com/beans
  • The JavaBeans Advisor, príležitostný elektronický bulletin obsahujúci správy a tipy pre vývojárov spoločnosti Beans, je archivovaný na adrese

    //splash.javasoft.com/beans/Advisor.html

  • The JavaBeans - časté otázky udržiavané Slnkom je na

    //splash.javasoft.com/beans/FAQ.html

  • Nakoniec omfaloskepsa je forma introspektívnej meditácie zahrnujúcej intenzívne rozjímanie o pupku. Navštívte webovú stránku Word A Day a naplňte svoj každodenný prejav temnými odkazmi! //www.wordsmith.org/awad/index.html

Tento príbeh „Pešia prehliadka JavaBeans“ bol pôvodne publikovaný spoločnosťou JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found