Programování

Pěší prohlídka JavaBeans

Předchozí 1 2 Strana 2 Stránka 2 ze 2

Co je JavaBeans a co dělá

JavaBeans není produkt, program ani vývojové prostředí. Jedná se o základní balíček Java (java.beans), které mohou fazole použít k poskytnutí rozšířené funkčnosti, a dokument (dále jen Specifikace JavaBeans), který popisuje, jak používat třídy a rozhraní v java.beans balíček k implementaci „fazolových funkcí“. Specifikace třídy je součástí základního vydání Java 1.1, takže k jeho použití není nutné instalovat žádný další software. Přidání fazolí vyžadovalo malou změnu jazyka Java per se, ačkoli do jádra bylo přidáno několik nových a velmi potřebných API pro podporu funkcí Beans. Čtení specifikace může být informativní, ale uspávající. Naštěstí je to volitelné, pokud již rozumíte tomu, jak a proč používat balíček JavaBeans. Možná už rozumíte fazolím čtením zábavné a poučné řady článků o JavaBeans JavaWorld, například.

JavaBeans mění třídy na softwarové komponenty tím, že poskytuje několik nových funkcí. Některé z těchto funkcí jsou specifické pro fazole. Ostatní, jako je serializace, se mohou vztahovat na žádný třídy, fazole nebo jinak, ale jsou zásadní pro pochopení a použití fazolí.

Softwarové komponenty mají vlastnosti, což jsou atributy objektu. Přizpůsobení je proces konfigurace Bean pro konkrétní úkol. Nové zpracování událostí schéma v Javě 1.1 bylo zčásti vytvořeno pro usnadnění komunikace mezi fazolemi. Fazole mohou být pitvány IDE nebo jinými třídami prostřednictvím procesu zvaného introspekce. Fazole mohou být vytrval (tj., serializováno) do bajtových streamů pro přenos nebo ukládání a trvalé fazole mohou být zabaleno do „souborů JAR“ pro usnadnění stahování a přístupu. Nakonec byly fazole navrženy tak, aby spolupracovat snadno pomocí starších komponentových technologií, jako jsou ActiveX a LiveConnect, a podílet se na transakcích se systémy Object Request Broker, jako je CORBA.

Podívejme se na každou z těchto funkcí trochu hlouběji.

Vlastnosti a přizpůsobení

Vlastnosti, jak je uvedeno výše, jsou atributy fazole. Vizuální vlastnosti mohou zahrnovat barvu nebo velikost obrazovky. Jiné vlastnosti nemusí mít žádnou vizuální reprezentaci: například BrowserHistory Bean může mít vlastnost určující maximální počet adres URL, které se mají uložit. Fazole vystavit seřizovač a kariérista metody (nazývané „přístupové metody“) pro jejich vlastnosti, které umožňují ostatním třídám nebo IDE manipulovat se svým stavem. Proces nastavení vlastností Bean v době návrhu nebo běhu se nazývá přizpůsobení.

Vývojář má velkou kontrolu nad přístupem a úpravami vlastností fazolí. Pro jednoduchá vlastnost, vývojář napíše metodu nazvanou setProperty () a zavolal další getProperty ().

Tady jsi bych viděli jste applet, ale z nějakého důvodu nemůžete.

Sloupcový graf

Například pokud používáte prohlížeč s podporou Java, uvidíte nalevo applet, který používá malou třídu s názvem Sloupcový graf. The Sloupcový graf je barevná lišta mezi dvěma tlačítky. Sloupcový graf chybí jen jedna věc, aby se stal Beanem: neimplementuje rozhraní java.io. Serializovatelné (protože většina prohlížečů dosud nezpracovává prostředí Java 1.1, a proto by ukázkový applet selhal.)

S výjimkou Serializovatelnosti, Sloupcový graf je jednoduchá fazole s několika metodami. Má to void setPercent (int pct), který zaplaví dno pct procento pruhu s červenou barvou. Metoda int getPercent () vrátí aktuální procento uložené v fazole (to je stav fazole). The setPercent () metoda také volá překreslit () pokud to změnilo procento, takže vizuální reprezentace objektu zůstane aktuální.

Volá kód appletu setPercent (getPercent () + 10) když +10% klepnutím na tlačítko způsobíte Sloupcový graf zvýšit jeho procento (pokud je <100%). Procent je příkladem a Vlastnost fazole, s metodami setter a getter pojmenovanými v souladu se specifikací JavaBeans. Jak tato série pokračuje, budeme tuto pokornou maličkost transformovat Sloupcový graf do užitečné softwarové komponenty, kterou lze zapojit do různých aplikací.

Hodnota an indexovaná vlastnost je pole. Metody přístupu indexovaných vlastností přijímají a vracejí pole hodnot namísto skalárů. Metody přistupujícího objektu mohou vyvolat zaškrtnuté výjimky pro hlášení chybových podmínek.

Někdy je užitečné, aby k akci došlo, když se změní určitá vlastnost objektu. Vázané vlastnosti způsobí, že se události změní na jiné objekty, když se změní hodnota vlastnosti, což možná umožní přijímači provést nějakou akci. Takže SpreadSheet Bean může být nakonfigurován tak, aby řekl PieChart Bean, aby se překreslil vždy, když se změní data tabulky.

Určité hodnoty pro vlastnosti jsou často nelegální na základě stavu ostatních fazolí. K tomu je možné nastavit fazole, aby je „poslouchal“ omezené vlastnosti ostatních fazolí a změny veta se mu nelíbí. Například ControlRodArray Bean jaderného reaktoru může chtít rušit někoho, kdo se pokouší změnit stav DrainReactorCorePump Bean na ON, pokud jsou regulační tyče vytaženy. (Nezkoušejte to doma. Pravděpodobně by nikdo neměl pro takové aplikace používat JavaBeans prostě dosud.)

Když vývojář propojuje Beans za účelem vytvoření aplikace, může IDE představit seznam vlastností obsahující všechny vlastnosti Beans a jejich aktuální hodnoty. (Seznam vlastností je dialogové okno sloužící k nastavení a / nebo zobrazení vlastností, například toho, co získáte výběrem Možnosti… v nabídce.) Vývojář nastaví vlastnosti graficky, což IDE převede na volání metod Beanova nastavovacího nástroje, změna stavu fazolí. Tento přizpůsobuje fazole pro konkrétní aplikaci.

Používání seznamů vlastností není vždy nejlepší způsob, jak zvládnout přizpůsobení fazolí. Některé fazole mají stav, který je příliš složitý na to, aby se s ním dalo snadno manipulovat tímto způsobem. Ostatní fazole by byly prostě chladnější, kdyby existoval intuitivnější způsob jejich nastavení. Představte si chudého manažera, který se chce jednoduše podívat na zprávy o prodeji a musí přijít na to, co má napsat do textového pole „Vzdálený zdroj dat ODBC“ v seznamu vlastností. Nebylo by hezčí, kdyby mohla jednoduše přetáhnout ikonu DataSource Bean (přizpůsobenou samozřejmě štítkem „Data prodeje“) na DataConnection Bean, čímž ji automaticky nakonfiguruje? Vývojář Beans může vložit list vlastností do samotného Beanu a IDE poté použije tento „přizpůsobovač“ k přizpůsobení Beanu.

Relevantní třídy pro manipulaci s vlastnostmi a přizpůsobení jsou v java.beans balík.

Zpracování událostí

Celá tato interakce mezi fazolemi předpokládá určitý způsob jejich komunikace. JDK 1.1 definuje nový model události které třídy (nejen fazole!) používají ke komunikaci. Ve skutečnosti se tento nový model události dostal do jednoho z nejpoužívanějších balíčků Java: java.awt!

V novém modelu události registruje třída zájem o aktivity jiné třídy prostřednictvím a rozhraní posluchače. Ve skutečnosti cílová objekt (zúčastněná strana) říká zdroj objekt (předmět zájmu): „Dejte mi vědět, kdykoli se stane něco takového.“ Když dojde k tak a tak, zdrojový objekt „vystřelí“ událost na cíl vyvoláním obslužné rutiny události cíle s podtřídou EventObject jako argument.

Události lze použít k implementaci vázaných a omezených vlastností. Ve výše uvedeném příkladu PieChart a SpreadSheet PieChart „registruje“ zájem o jakoukoli změnu v SpreadSheet (řekněme) DataList vlastnictví. Když se SpreadSheet změní DataList majetek, prochází a DataListChangedEvent (podtřída z EventObject), označující, co se změnilo, ke každé metodě obsluhy událostí posluchače. Cíl (PieChart) poté událost prozkoumá a provede příslušná opatření.

Příklad jaderného reaktoru funguje podobně; ale v tom případě cíl veta změnu vyvoláním výjimky. Svět je tak zachráněn před rozsáhlým radioaktivním ničením.

The EventObject třídu lze rozšířit a vytvořit uživatelem definované události. Třídy nyní mohou definovat a používat nové typy událostí k vzájemnému odesílání zpráv. To znamená, že fazole spuštěné uvnitř stejného kontejneru mohou komunikovat předáváním zpráv kolem. To pomáhá odpojit závislosti mezi objekty, o kterých víme, že je to velmi dobrá věc.

Uživatelem definované (a další) události jsou odvozeny z třídy java.util.EventObject.

Introspekce

Docela zvláštní termín introspekce je Java-speak pro proces programové analýzy veřejných metod a členů třídy. Tento proces se také někdy nazývá objev. Nové odraz mechanismus v jádru Java, který dokáže pitvat objekt a vrátit popis jeho obsahu, umožňuje introspekci. (Ačkoli Java může být reflexní, dokonce introspektivní, omphaloskepsis stále není součástí distribuce jádra.)

Již jsme narazili na jednu aplikaci této funkce. Nahoře jsme popsali IDE, které by mohlo sestavit seznam vlastností Bean, které se zobrazí vývojáři. Jak může IDE vědět, jaké vlastnosti má Bean? IDE zjistí vlastnosti Beanu jedním ze dvou způsobů: požádáním Beanu o popis jeho vlastností nebo pitváním Beanu jeho introspekcí.

Typické IDE začne tím, že požádá Bean o objekt BeanInfo, který mimo jiné popisuje vlastnosti Bean. IDE poté použije objekt BeanInfo k vytvoření seznamu vlastností. (To je za předpokladu, že Bean neposkytuje vlastní přizpůsobitel.) Pokud Bean neví, jak vrátit objekt BeanInfo, IDE poté introspektuje Bean a prohledá seznam metod na jména začínající na soubor a dostat. Předpokládá (podle konvence), že tyto metody jsou přístupovými právy k vlastnostem, a vytvoří nový seznam vlastností na základě existujících přístupových metod a typů argumentů, které tyto metody používají. Pokud tedy IDE najde metody jako setColor (barva), Barva getColor (), setSize (velikost), a Velikost getSize (), poté vytvoří seznam vlastností s vlastnostmi Barva a Velikosta vhodně napsané widgety pro jejich nastavení.

To znamená, že pokud vývojář jednoduše dodržuje konvence pro pojmenování přístupových metod, IDE může automaticky určit, jak vytvořit list vlastností přizpůsobení pro komponentu.

Reflexní mechanismus, který provádí introspekci, je v novém základním jazykovém balíčku java.lang.reflect.

Perzistence a balení

Často je užitečné „zmrazit“ objekt převedením jeho stavu na hromadu dat, která se sbalí pro pozdější použití - nebo se přenesou přes síť ke zpracování jinde. Tento proces se nazývá serializace a je novou funkcí jádra Java.

Jedním z nejjednodušších použití pro serializaci je uložení stavu přizpůsobeného objektu Bean, aby bylo možné správně nastavit nově vytvořené vlastnosti objektu Bean za běhu.

Serializace je také základem technologie komponent, což umožňuje schémata distribuovaného zpracování, jako je CORBA. Pokud objekt nemá lokálně informace, které potřebuje k provedení svého úkolu, může se odeslat zprostředkovateli požadavků, který objekt serializuje a odešle jinde ke zpracování. Na vzdáleném konci se objekt rekonstituuje a provede se původně požadovaná operace. Toto je také způsob, jak realizovat vyvažování zátěže (pro drahé úkoly, to znamená: serializace a deserializace často nejsou levné).

Kde chováte skupinu lyofilizovaných fazolí, které byly takto „nakládány“? Proč, samozřejmě, v JAR! Specifikace JavaBeans popisuje a SKLENICE soubor jako strukturovaný soubor ZIP obsahující více serializovaných objektů, dokumentaci, obrázky, soubory tříd atd., s a manifest který popisuje, co je v JAR. Soubor JAR, který obsahuje mnoho komprimovaných malých souborů, lze stáhnout v jednom kuse a dekomprimovat na konci klienta, což zefektivňuje stahování appletu (například). (JAR je očividně hra na Unixu dehet formát souboru.)

The java.io balíček poskytuje serializaci objektu. Specifikace JavaBeans popisuje formát souborů JAR.

Spolupráce

Nějaký vtip jednou řekl, že na standardech je hezké to, že je z čeho vybírat. Technologie komponent nejsou výjimkou. Existuje mnoho stávajících systémů založených na OLE (nebo jeho nejnovější inkarnaci, ActiveX), OpenDoc a LiveConnect. JavaBeans byl navržen tak, aby (alespoň nakonec) spolupracoval s těmito dalšími technologiemi komponent.

Není realistické očekávat, že vývojáři opustí stávající investice do jiných technologií a znovu implementují vše v Javě. Od vydání Java 1.1 jsou k dispozici první „můstkové“ sady Beans / ActiveX, které vývojářům umožňují bezproblémové propojení komponent Beans a ActiveX do stejné aplikace. Rozhraní Java IDL, které umožní třídám Java pracovat se stávajícími systémy CORBA, má vyjít letos.

I když most Beans / ActiveX a Java IDL nejsou součástí standardní distribuce JavaBeans, doplňují možnosti JavaBeans jako průmyslovou a otevřenou technologii pro software přenosných komponent.

Závěr

Pokryli jsme hodně půdy. V tomto článku jste se dozvěděli, jaké softwarové komponenty jsou a proč jsou cenné. Poté jste se dozvěděli o různých vlastnostech prostředí JavaBeans, včetně vlastností, přizpůsobení, událostí, introspekce, vytrvalosti, balení a spolupráce se staršími systémy komponent.

V dalším článku v této sérii vás seznámíme s používáním prostředí JavaBeans a podrobně se podíváme na vlastnosti Bean: jak fungují a jak přizpůsobit vaše fazole. Postupně probereme nové základní funkce Java, které umožňují fazole. Budoucí články v této sérii se budou věnovat podrobnostem témat, která jsme tento měsíc diskutovali.

Mark Johnson má BS v oboru počítačového a elektrotechnického inženýrství na Purdue University (1986). Má 15 let zkušeností s programováním v jazyce C a dva roky v jazyce C ++ a je fanatickým oddaným přístupu Design Pattern v objektově orientované architektuře, softwarových komponent teoreticky a prostředí JavaBeans v praxi. V posledních několika letech pracoval pro společnosti Kodak, Booz-Allen a Hamilton a EDS v Mexico City, kde vyvíjel databázové aplikace Oracle a Informix pro mexický federální volební institut a pro mexické celní správy. Minulý rok strávil prací v NETdelivery, internetovém startupu nyní v Boulderu, CO. Mark je obarvený unixový programátor a v Javě vidí chybějící spojení mezi nyní všudypřítomnými klientskými systémy pro stolní počítače a otevřenými, distribuovanými a škálovatelné podnikové back-endy. V současné době pracuje jako designér a vývojář pro Object Products ve Fort Collins, CO.

Další informace o tomto tématu

  • Vynikající srovnání prostředí JavaBeans a ActiveX lze nalézt v publikaci Merlina Hughese JavaWorld titulní příběh, „JavaBeans a ActiveX jdou hlava na hlavě“

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

  • Sun Microsystems udržuje web pro JavaBeans. Na tomto webu si můžete stáhnout nejnovější BDK (Beans Developer's Kit), přečíst si specifikaci JavaBeans, procházet online tutoriál a získat informace o nejnovějších informacích o Beans. //java.sun.com/beans
  • The JavaBeans Advisor, příležitostný elektronický zpravodaj obsahující zprávy o fazolích a tipy pro vývojáře, je archivován na

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

  • The JavaBeans FAQ udržovaný společností Sun je na

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

  • Konečně, omfaloskepse je forma introspektivní meditace zahrnující intenzivní rozjímání o pupku. Podívejte se na web Word A Day a naplňte svůj každodenní projev temnými odkazy! //www.wordsmith.org/awad/index.html

Tento příběh „Pěší prohlídka JavaBeans“ původně publikoval JavaWorld.

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