Programiranje

Sprehod po JavaBeansu

Prejšnja 1 2 Stran 2 Stran 2 od 2

Kaj je JavaBeans in kaj počne

JavaBeans ni izdelek, program ali razvojno okolje. Je tako osnovni paket Java (java.beans), ki jo Beans lahko uporablja za zagotovljeno razširjeno funkcionalnost, in dokument ( Specifikacija JavaBeans), ki opisuje, kako uporabljati razrede in vmesnike v java.beans paket za izvajanje "Beans funkcionalnosti." Specifikacija razreda je del osnovne izdaje Jave 1.1, zato za njeno uporabo ni treba namestiti dodatne programske opreme. Dodajanje Beans-a je zahtevalo malo sprememb v jeziku Java same po sebi, čeprav je bilo v osrednjo izdajo dodanih več novih in zelo potrebnih API-jev, ki podpirajo funkcije Beans. Branje specifikacije je lahko informativno, a neprijetno. Na srečo ni obvezno, če že veste, kako in zakaj uporabljati paket JavaBeans. Mogoče Beans že razumete z branjem zabavne in razsvetljujoče serije člankov o JavaBeansu v JavaWorld, na primer.

JavaBeans pretvori razrede v programske komponente z zagotavljanjem več novih funkcij. Nekatere od teh lastnosti so značilne za fižol. Drugi, na primer serializacija, se lahko nanašajo na kaj razred, Bean ali kako drugače, vendar so ključnega pomena za razumevanje in uporabo fižola.

Programske komponente imajo lastnosti, ki so atributi predmeta. Prilagajanje je postopek konfiguriranja Bean-a za določeno nalogo. Novi ravnanje z dogodki Shema v Javi 1.1 je bila deloma ustvarjena za lažjo komunikacijo med Beans. IDE ali drugi razredi lahko fižol razsekajo s postopkom, imenovanim introspekcija. Fižol je lahko vztrajala (tj. serializirano) v bajtne tokove za prenos ali shranjevanje in lahko trajni fižol pakirano v "datoteke JAR" za lažji prenos in dostop. Končno je bil fižol zasnovan tako, da interoperabilen enostavno s starejšimi komponentnimi tehnologijami, kot sta ActiveX in LiveConnect, in sodelujte v transakcijah s sistemom Object Request Broker, kot je CORBA.

Poglejmo si vsako od teh zmožnosti nekoliko bolj poglobljeno.

Lastnosti in prilagajanje

Lastnosti, kot je navedeno zgoraj, so atributi zrna. Vizualne lastnosti lahko vključujejo barvo ali velikost zaslona. Druge lastnosti morda nimajo vizualne predstavitve: na primer BrowerHistory Bean ima lahko lastnost, ki določa največje število URL-jev, ki jih je treba shraniti. Fižol izpostavi postavljalec in pridobivalec metode (imenovane "dostopne metode") za njihove lastnosti, ki drugim razredom ali IDE omogočajo, da manipulirajo s svojim stanjem. Imenuje se postopek nastavitve lastnosti Bean-a med načrtovanjem ali izvajanjem prilagajanje.

Razvijalec ima velik nadzor nad dostopom in spreminjanjem lastnosti Beans. Za preprosta lastnost, razvijalec napiše metodo z imenom setProperty () in drugi poklical getProperty ().

Tukaj ti bi videli aplet, vendar iz nekega razloga ne morete.

Stolpični diagram

Če na primer uporabljate brskalnik, ki podpira Java, boste na levi strani videli programček, ki uporablja majhen razred, imenovan Stolpični diagram. The Stolpični diagram je barvna vrstica med tipkama. Stolpični diagram manjka samo ena stvar, da postane Bean: ne izvaja vmesnika java.io.Serializable (ker večina brskalnikov še ne obvladuje Jave 1.1 in zato programček ne bi uspel.)

Z izjemo serializacije, Stolpični diagram je preprost Bean, z zelo malo metodami. Ima void setPercent (int pct), ki poplavi dno pct odstotkov palice z rdečo. Metoda int getPercent () vrne trenutni odstotek, shranjen v Beanu (to je stanje Bean-a). The setPercent () metoda tudi kliče prebarvati () če je spremenil odstotek, tako da je vizualna predstavitev predmeta na tekočem.

Klic kode programčka setPercent (getPercent () + 10) ko +10% kliknete, kar povzroči Stolpični diagram za povečanje njegovega odstotka (če je <100%). Odstotek je primer a Lastnost fižola, z metodami setter in getter, imenovanimi v skladu s specifikacijo JavaBeans. Ko se bo nadaljevala ta serija, bomo to skromno malo spremenili Stolpični diagram v uporabno programsko komponento, ki jo lahko priključite na različne programe.

Vrednost indeksirana lastnina je matrika. Metode dostopa indeksiranih lastnosti prejmejo in vrnejo polja vrednosti namesto skalarjev. Dostopne metode lahko vržejo preverjene izjeme za poročanje o napakah.

Včasih je koristno, da se dejanje zgodi, ko se določena lastnost predmeta spremeni. Vezane lastnosti povzroči, da se dogodki pošiljajo drugim predmetom, ko se vrednost lastnosti spremeni, kar sprejemniku morda omogoči, da nekaj ukrepa. Torej, SpreadSheet Bean je morda konfiguriran tako, da PieChart Beanu sporoči, naj se na novo nariše vsakič, ko se spremenijo podatki preglednice.

Nekatere vrednosti lastnosti so pogosto nezakonite glede na stanje drugih zrn. Za njihovo poslušanje lahko nastavite fižol omejene lastnosti drugih fižolov in spremembe veta, ki jih ne mara. Na primer, element ControlRodArray Bean jedrskega reaktorja morda želi posegati v nekoga, ki poskuša spremeniti stanje DrainReactorCorePump Bean na ON, če izvlečete krmilne palice. (Ne poskušajte tega doma. Verjetno nihče ne bi smel uporabljati JavaBeans za take programe samo še.)

Ko razvijalec poveže Beans skupaj, da ustvari aplikacijo, lahko IDE predstavi list lastnosti, ki vsebuje vse lastnosti Beans-a in njihove trenutne vrednosti. (List lastnosti je pogovorno okno, ki se uporablja za nastavitev in / ali ogled lastnosti, na primer tiste, ki jih dobite z izbiro možnosti ... v meniju.) Razvijalec lastnosti nastavi grafično, kar IDE pretvori v klice metod nastavitve fižola, spreminjanje države fižola. To prilagaja fižol za določeno uporabo.

Uporaba seznamov lastnosti ni vedno najboljši način za prilagajanje fižolov. Nekateri fižoli imajo stanje, ki je preveč zapleteno, da bi ga lahko zlahka manipulirali na ta način. Drugi fižol bi bil preprosto hladnejši, če bi ga imeli na bolj intuitiven način. Predstavljajte si slabega upravitelja, ki si preprosto želi ogledati poročila o prodaji in mora ugotoviti, kaj vtipkati v besedilno polje »Oddaljeni vir podatkov ODBC« na listu lastnosti. Ali ne bi bilo hladneje, če bi lahko preprosto povlekla in spustila ikono DataSource Bean (seveda po meri z oznako »Podatki o prodaji«) na DataConnection Bean in jo s tem samodejno konfigurirala? Razvijalec Beans lahko vgradi list lastnosti v sam Bean, IDE pa nato s tem »prilagoditeljem« prilagodi Bean.

Ustrezni razredi za upravljanje lastnosti in prilagajanje so v java.beans paket.

Obravnava dogodkov

Vsa ta interakcija med fižolom predpostavlja neki način njihove komunikacije. JDK 1.1 opredeljuje novo model dogodka ki jih razredi (ne samo fižol!) uporabljajo za komunikacijo. Pravzaprav se je ta novi model dogodkov znašel v enem izmed najpogosteje uporabljanih paketov Java: java.awt!

V novem modelu dogodkov razred registrira zanimanje za dejavnosti drugega razreda s pomočjo vmesnik poslušalca. Pravzaprav cilj predmet (zainteresirana stranka) pove vir predmet (predmet zanimanja), "Sporočite mi, kadar se zgodi tako ali tako." Ko se zgodi tako in tako, izvorni objekt "sproži" dogodek na cilju tako, da prikliče ciljni upravljalnik dogodkov s podrazredom EventObject kot argument.

Dogodke lahko uporabimo za izvajanje vezanih in omejenih lastnosti. V zgornjem primeru PieChart in SpreadSheet PieChart "registrira" zanimanje za kakršno koli spremembo SpreadSheet-a (recimo) DataList lastnine. Ko bo SpreadSheet spremenil svoj DataList lastnina, preide a DataListChangedEvent (podrazvrščeno iz EventObject), ki kaže, kaj se je spremenilo, za vsako metodo obravnave dogodkov vsakega zainteresiranega poslušalca Tarča (Krožni diagram) nato preuči dogodek in ustrezno ukrepa.

Primer jedrskega reaktorja deluje podobno; ampak v tem primeru tarča veto sprememba z vrnitvijo izjeme. Tako je svet rešen pred razširjenim radioaktivnim uničenjem.

The EventObject razred lahko razširite na ustvarjanje uporabniško določeni dogodki. Razredi lahko zdaj določajo in uporabljajo nove vrste dogodkov za medsebojno pošiljanje sporočil. To pomeni, da lahko zrna, ki se izvajajo v istem vsebniku, komunicirajo tako, da sporočila prenašajo. To pomaga ločiti odvisnosti med predmeti, za katere vemo, da so zelo dobra stvar.

Uporabniško določeni (in drugi) dogodki izhajajo iz razreda java.util.EventObject.

Introspekcija

Precej čuden izraz introspekcija govori jezik Java za proces programske analize javnih metod in članov razreda. Ta postopek se včasih imenuje tudi odkritje. Novi refleksija mehanizem v jedru Jave, ki lahko secira predmet in vrne opis njegove vsebine, omogoča samoogled. (Čeprav je Java morda odsevna, tudi introspektivna, omfaloskepsa še vedno ni del osrednje distribucije.)

Z eno aplikacijo te zmogljivosti smo že naleteli. Zgoraj smo opisali IDE, ki bi lahko sestavil seznam lastnosti Bean, ki bi ga predstavil razvijalcu. Kako lahko IDE ve, kakšne lastnosti ima Bean? IDE lastnosti fižola odkrije na enega od dveh načinov: tako, da prosi fižol za opis njegovih lastnosti, ali tako, da fižol secira z introspektivo.

Tipična IDE se bo začela tako, da bo Bean zahteval objekt BeanInfo, ki med drugim opisuje lastnosti Beana. IDE bo nato uporabil objekt BeanInfo za izdelavo lista lastnosti. (To predvideva, da Bean ne ponuja lastnega prilagajalca.) Če Bean ne ve, kako vrniti objekt BeanInfo, IDE nato sam pregleda Bean in pregleda seznam metod za imena, ki se začnejo z nastavite in dobili. Predvideva (po dogovoru), da so te metode dostop do lastnosti, in ustvari nov list lastnosti na podlagi obstoječih metod dostopnikov in vrst argumentov, ki jih te metode sprejmejo. Torej, če IDE najde metode, kot je setColor (barva), Barva getColor (), setSize (Velikost), in Velikost getSize (), potem bo ustvaril list lastnosti z lastnostmi Barva in Velikostin ustrezno vtipkani pripomočki za njihovo nastavitev.

To pomeni, da lahko razvijalec samodejno določi, kako razviti razvijalec za lastnost prilagajanja za komponento, če razvijalec preprosto upošteva pravila za poimenovanje metod za dostop.

Odsevni mehanizem, ki izvaja introspekcijo, je v novem jezikovnem jedru java.lang.reflect.

Obstojnost in embalaža

Pogosto je koristno, da predmet "zamrznete-posušite" tako, da njegovo stanje pretvorite v blob podatkov, ki ga želite pakirati za kasnejšo uporabo - ali poslati prek omrežja za obdelavo drugje. Ta postopek se imenuje serializacija in je nova značilnost jedra Java.

Ena najpreprostejših načinov uporabe za serializacijo je shranjevanje stanja prilagojenega Bean-a, tako da lahko na novo zgrajene lastnosti Bean-a pravilno nastavimo med izvajanjem.

Tudi serializacija je temelj tehnologije komponent, kar omogoča sheme porazdeljene obdelave, kot je CORBA. Če objekt lokalno nima informacij, ki jih potrebuje za izvajanje svoje naloge, se lahko pošlje posredniku zahtev, ki predmet serializira in pošlje drugam v obdelavo. Na oddaljenem koncu se objekt rekonstituira in izvede prvotno zahtevana operacija. To je tudi način za uresničitev uravnoteženja obremenitve (za drage naloge, to je: serializacija in deserializacija pogosto nista poceni).

Kje hranite skupino liofiliziranega fižola, ki je bil na tak način "vložen"? Zakaj, seveda v JAR! Specifikacija JavaBeans opisuje a JAR datoteka kot strukturirana datoteka ZIP, ki vsebuje več serializiranih predmetov, dokumentacijo, slike, datoteke razredov itd., z manifest ki opisuje, kaj je v JAR. Datoteko JAR, ki vsebuje veliko stisnjenih majhnih datotek, je mogoče prenesti v enem kosu in jo razkužiti na odjemalski strani, s čimer je prenos aplikacij (na primer) učinkovitejši. (JAR je precej očitno igra na Unixu katran format datoteke.)

The java.io paket zagotavlja serializacijo objektov. Specifikacija JavaBeans opisuje obliko datotek JAR.

Interakcija

Nekateri wag so nekoč rekli, da je pri standardih lepo, da je med njimi veliko izbire. Komponentne tehnologije niso nobena izjema. Obstaja veliko obstoječih sistemov, ki temeljijo na OLE (ali njegovi zadnji inkarnaciji, ActiveX), OpenDoc in LiveConnect. JavaBeans je zasnovan tako, da (vsaj sčasoma) deluje s temi drugimi komponentnimi tehnologijami.

Ni realno pričakovati, da bodo razvijalci opustili obstoječe naložbe v druge tehnologije in vse v Java uvedli. Od izdaje Jave 1.1 so na voljo prvi kompleti za "most" Beans / ActiveX, ki razvijalcem omogočajo brezhibno povezavo komponent Beans in ActiveX v isti program. Vmesnik Java IDL, ki bo omogočil, da razredi Java delujejo z obstoječimi sistemi CORBA, bo izšel letos.

Medtem ko most Beans / ActiveX in Java IDL nista del standardne distribucije JavaBeans, pa zmogljivosti JavaBeans zaokrožata kot odprto tehnologijo za prenosno komponentno programsko opremo.

Zaključek

Pokrili smo veliko tal. V tem članku ste izvedeli, kaj so programske komponente in zakaj so dragocene. Nato ste spoznali različne lastnosti JavaBeans, vključno z lastnostmi, prilagajanjem, dogodki, introspekcijo, obstojnostjo, pakiranjem in interoperabilnostjo s starejšimi komponentnimi sistemi.

V naslednjem članku te serije vam bomo predstavili JavaBeans in si poglobili lastnosti Bean-a: kako delujejo in kako prilagoditi vaš Beans. Med nadaljevanjem bomo razpravljali o novih osnovnih funkcijah Java, ki omogočajo Beans. Prihodnji članki v tej seriji se bodo poglobili v podrobnosti tem, o katerih smo razpravljali ta mesec.

Mark Johnson je diplomiral iz računalništva in elektrotehnike na Univerzi Purdue (1986). Ima 15 let izkušenj s programiranjem v jeziku C in dve leti v jeziku C ++ ter je fanatični zagovornik pristopa Design Pattern v objektno usmerjeni arhitekturi, programskih komponent v teoriji in JavaBeans v praksi. V zadnjih nekaj letih je delal za Kodak, Booz-Allen in Hamilton ter EDS v Mexico Cityju in razvijal baze podatkov Oracle in Informix za mehiški zvezni volilni inštitut in mehiške carine. Zadnje leto je preživel v podjetju NETdelivery, internetnem zagonu, ki je zdaj v Boulderju, CO. Mark je obarvan Unixov programer in Java vidi kot manjkajočo povezavo med zdaj že vseprisotnimi namiznimi odjemalskimi sistemi in odprtimi, distribuiranimi, in razširljive zaledje podjetja. Trenutno dela kot oblikovalec in razvijalec za Object Products v Fort Collins, CO.

Preberite več o tej temi

  • Odlično primerjavo JavaBeans in ActiveX najdete v Merlin Hughes ' JavaWorld naslovna zgodba, "JavaBeans in ActiveX gredo v glavo"

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

  • Sun Microsystems vzdržuje spletno mesto za JavaBeans. Na to spletno mesto lahko prenesete najnovejši BDK (Beans Developer's Kit), preberete specifikacijo JavaBeans, brskate po spletni vadnici in izveste o najnovejših informacijah o fižolu. //java.sun.com/beans
  • The Svetovalec JavaBeans, občasno elektronsko glasilo, ki vsebuje novice o nasvetih Beans in nasvete za razvijalce, je arhivirano na

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

  • The Pogosta vprašanja o JavaBeans ki ga vzdržuje Sun is at

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

  • Končno, omfaloskepsis je oblika introspektivne meditacije, ki vključuje intenzivno razmišljanje o popku. Oglejte si spletno mesto Word A Day in vsak dan napolnite z nejasnimi referencami! //www.wordsmith.org/awad/index.html

To zgodbo "Sprehod po JavaBeansu" je prvotno objavil JavaWorld.

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