Pješačka tura JavaBeansom

Prethodna 1 2 Stranica 2 Stranica 2 od 2

Što je JavaBeans i čime se bavi

JavaBeans nije proizvod, program ili razvojno okruženje. To je i osnovni Java paket ( java.beans) koji Beans može koristiti za pružanje proširene funkcionalnosti i dokument ( Specifikacija JavaBeans ) koji opisuje kako koristiti klase i sučelja u java.beanspaketu za implementaciju "Beans funkcionalnosti". Specifikacija klase dio je osnovnog izdanja Jave 1.1 i zato se ne smije instalirati dodatni softver da bi se mogao koristiti. Dodavanje graha zahtijevalo je malo promjena u jeziku Java sam po sebi, iako je nekoliko novih i prijeko potrebnih API-ja dodano u osnovno izdanje za podršku značajki Beans. Čitanje specifikacije može biti informativno, ali uspavljujuće. Srećom, nije obavezno ako već razumijete kako i zašto koristiti paket JavaBeans. Možda Beans već razumijete čitajući zabavnu i prosvjetljujuću seriju članaka o JavaBeansu u JavaWorldu , na primjer.

JavaBeans pretvara klase u softverske komponente pružajući nekoliko novih značajki. Neke od ovih značajki specifične su za grah. Drugi se, poput serializacije, mogu primijeniti na bilo koju klasu, Bean ili na neki drugi način, ali su presudni za razumijevanje i upotrebu graha.

Softverske komponente imaju svojstva koja su atributi objekta. Prilagođavanje je postupak konfiguriranja Bean-a za određeni zadatak. Nova shema rukovanja događajima u Javi 1.1 stvorena je djelomično kako bi se olakšala komunikacija između Beansova. IDE ili druge klase mogu grah secirati putem postupka koji se naziva introspekcija . Grah se može zadržati (tj. Serializirati ) u bajt tokove za prijenos ili pohranu, a trajni grah može se pakirati u "JAR datoteke" radi lakšeg preuzimanja i pristupa. Konačno, grah je dizajniran za međusobnu suradnju lako s naslijeđenim komponentnim tehnologijama poput ActiveX-a i LiveConnect-a i sudjelujte u transakcijama sa sustavima Object Request Broker kao što je CORBA.

Pogledajmo svaku od ovih mogućnosti malo dublje.

Svojstva i prilagodba

Svojstva, kao što je gore spomenuto, svojstva su graha. Vizualna svojstva mogu uključivati ​​boju ili veličinu zaslona. Ostala svojstva možda nemaju vizualni prikaz: na primjer, BrowserHistory Bean može imati svojstvo koje određuje maksimalan broj URL-ova za pohranu. Grah izlaže metode postavljača i dobivača (zvane "metode pristupa") za njihova svojstva, dopuštajući drugim klasama ili IDE-ima da manipuliraju svojim stanjem. Proces postavljanja svojstava Bean-a tijekom dizajna ili izvođenja naziva se prilagodba .

Programer ima veliku kontrolu nad pristupom i izmjenom svojstava graha. Za jednostavno svojstvo , programer piše metodu koja se zove setProperty()i druga koja se zove getProperty().

Ovdje biste vidjeli aplet, ali iz nekog razloga ne možete.

Grafikon

Na primjer, ako koristite preglednik s omogućenom Javom, vidjet ćete lijevo aplet koji koristi malu klasu tzv BarChart. Traka BarChartu boji nalazi se između dva gumba. BarChartnedostaje samo jedna stvar da postane Bean: ne implementira sučelje java.io.Serializable(jer većina preglednika još ne obrađuje Java 1.1, pa bi primjer apleta propao.)

Uz izuzetak da se može serirati, BarChartjednostavan je Bean, sa samo nekoliko metoda. Ima void setPercent(int pct), što donji pct postotka šipke preplavi crvenom bojom. Metoda int getPercent()vraća trenutni postotak pohranjen u Beanu (ovo je Beanovo stanje). setPercent()Metoda također poziva repaint()ako se promijenio postotak, tako da je vizualni prikaz objekta ostaje up-to-date.

Kôd apleta poziva setPercent(getPercent()+10)kada se pritisne gumb + 10% , što dovodi BarChartdo povećanja njegovog postotka (ako je <100%). Postotak je primjer svojstva Bean , s metodama postavljanja i dobivanja imenovanim u skladu sa specifikacijom JavaBeans. Kako se ova serija nastavlja, pretvorit ćemo ovo skromno malo BarChartu korisnu softversku komponentu koja se može uključiti u razne programe.

Vrijednost indeksiranog svojstva je niz. Metode pristupa indeksiranih svojstava primaju i vraćaju nizove vrijednosti umjesto skalara. Načini pristupa mogu baciti provjerene iznimke kako bi prijavili uvjete pogreške.

Ponekad je korisno da se radnja dogodi kada se promijeni određeno svojstvo objekta. Vezana svojstva uzrokuju slanje događaja drugim objektima kada se vrijednost svojstva promijeni, što omogućuje prijemniku da poduzme neke radnje. Dakle, SpreadSheet Bean može biti konfiguriran da kaže PieChart Beanu da se precrta kad god se promijene podaci proračunske tablice.

Često su određene vrijednosti svojstava protuzakonite na temelju stanja ostalih graha. Grah se može postaviti tako da "sluša" ova ograničena svojstva drugih graha, a promjene "veta" koje mu se ne sviđaju. Na primjer, ControlRodArray Bean nuklearnog reaktora možda će htjeti ometati nekoga tko pokušava promijeniti stanje DrainReactorCorePump Bean-a u ON ako se izvuku upravljačke šipke. (Ne pokušavajte ovo kod kuće. Vjerojatno nitko ne bi trebao biti koristeći JavaBeans za takve aplikacije samo još.)

Kada programer povezuje Beans zajedno kako bi stvorio aplikaciju, IDE može predstaviti list svojstava koji sadrži sva svojstva Beansova i njihove trenutne vrijednosti. (List svojstava dijaloški je okvir koji se koristi za postavljanje i / ili prikaz svojstava, poput onoga što dobijete odabirom opcije ... na izborniku.) Programer svojstva postavlja grafički, što IDE prevodi u pozive metoda postavljanja graha, promjena stanja graha. Ovim se grah prilagođava određenoj primjeni.

Korištenje popisa svojstava nije uvijek najbolji način za prilagodbu graha. Neki grah ima previše složenu državu da bi se njime lako moglo manipulirati. Ostali grah jednostavno bi bio hladniji da postoji intuitivniji način postavljanja. Zamislite lošeg upravitelja koji jednostavno želi pogledati izvješća o prodaji i mora smisliti što upisati u tekstualni okvir "Udaljeni izvor podataka ODBC" na listu svojstava. Ne bi li bilo hladnije kad bi mogla jednostavno povući i ispustiti ikonu DataSource Bean-a (prilagođenu oznakom "Podaci o prodaji", naravno) na DataConnection Bean, čime ga automatski konfigurira? Razvojni programer Beans može ugraditi list svojstava u sam Bean, a IDE zatim koristi ovaj "prilagoditelj" za prilagodbu Bean-a.

Relevantne klase za manipulaciju svojstvima i prilagodbu nalaze se u java.beanspaketu.

Rukovanje događajima

Sva ta interakcija između graha pretpostavlja im neki način komunikacije. JDK 1.1 definira novi model događaja koji klase (ne samo grah!) Koriste za komunikaciju. Zapravo se ovaj novi model događaja našao u jednom od najčešće korištenih Java paketa java.awt:!

U novom modelu događaja, klasa registrira zanimanje za aktivnosti druge klase putem sučelja slušatelja . U stvari, ciljni objekt (zainteresirana strana) kaže izvornom objektu (predmet od interesa): "Obavijesti me kad god se dogodi to i to." Kada se dogodi tako-tako, izvorni objekt "aktivira" događaj na cilju pozivajući ciljni obrađivač događaja s podrazredom EventObjectkao argument.

Događaji se mogu koristiti za implementaciju vezanih i ograničenih svojstava. U gornjem primjeru PieChart i SpreadSheet, PieChart "registrira" interes za bilo kakvu promjenu svojstva SpreadSheet (recimo) DataList . Kad će SpreadSheet promijeniti svojstvo DataList , on prosljeđuje DataListChangedEvent(potklasirano iz EventObject), naznačujući što se promijenilo, u metodu obrade događaja svakog zainteresiranog slušatelja. Cilj ( PieChart) zatim ispituje događaj i poduzima odgovarajuće mjere.

Primjer nuklearnog reaktora djeluje slično; ali u tom slučaju cilj stavlja veto na promjenu bacajući iznimku. Tako je svijet spašen od raširenog radioaktivnog uništavanja.

EventObjectKlasa može se proširiti i na stvaranje korisnički definirane događaje . Klase sada mogu definirati i koristiti nove vrste događaja za međusobno slanje poruka. To znači da grah koji se izvodi u istom spremniku može komunicirati prenošenjem poruka oko sebe. To pomaže razdvojiti ovisnosti između objekata, za koje znamo da je vrlo dobra stvar.

Korisnički definirani (i drugi) događaji izvedeni su iz klase java.util.EventObject.

Introspekcija

Prilično čudan pojam introspekcije je govor na jeziku Java za proces programske analize javnih metoda i članova klase. Taj se postupak ponekad naziva i otkrićem . Novi mehanizam odražavanja u jezgri Java, koji može secirati objekt i vratiti opis njegovog sadržaja, omogućuje introspekciju. (Iako Java može biti reflektirajuća, čak i introspektivna, omfaloskepsa još uvijek nije dio osnovne distribucije.)

Već smo naišli na jednu aplikaciju ove mogućnosti. Iznad smo opisali IDE koji može stvoriti popis svojstava Bean-a koji će se predstaviti programeru. Kako IDE može znati koja svojstva grah ima? IDE otkriva svojstva zrna na jedan od dva načina: pitajući zrno za opis njegovih svojstava ili seciranjem zrna introspektivom.

Tipični IDE započinje traženjem Bean-a za BeanInfo objekt, koji između ostalog opisuje svojstva Bean-a. IDE će zatim koristiti objekt BeanInfo za izradu lista svojstava. (To je pod pretpostavkom da Bean ne nudi vlastiti prilagoditelj.) Ako Bean ne zna vratiti BeanInfo objekt, IDE zatim introspektira Bean i skenira popis metoda za imena koja počinju s set i dobiti . Pretpostavlja (prema dogovoru) da su ove metode pristupnici svojstvima i stvara novi list svojstava na temelju postojećih metoda pristupa i vrsta argumenata koje te metode uzimaju. Dakle, ako su metode IDE Pronalazi se sviđa setColor(Color), Color getColor(), setSize(Size), a Size getSize(), onda će stvoriti list zemljištu sa svojstvimaBoja i veličina te odgovarajuće otkucani widgeti za njihovo postavljanje.

To znači da ako programer jednostavno slijedi konvencije za imenovanje metoda pristupa, IDE može automatski odrediti kako stvoriti list svojstava prilagodbe za komponentu.

Mehanizam refleksije koji vrši introspekciju nalazi se u novom jezgrovitom paketu java.lang.reflect.

Postojanost i pakiranje

Često je korisno "zamrznuti-osušiti" objekt pretvaranjem njegovog stanja u blob podataka koji će se spakirati za kasniju upotrebu - ili poslati mrežom za obradu negdje drugdje. Taj se postupak naziva serializacija i nova je značajka Java jezgre.

Jedna od najjednostavnijih upotreba za serializaciju je spremanje stanja prilagođenog Bean-a, tako da se novoizgrađena svojstva Bean-a mogu ispravno postaviti u vrijeme izvođenja.

Također, serializacija je glavni dio komponentne tehnologije, što omogućava sheme distribuirane obrade kao što je CORBA. Ako objekt lokalno nema podatke koji su mu potrebni za izvršavanje zadatka, može se poslati posredniku zahtjeva, koji serializira objekt i šalje ga drugdje na obradu. Na udaljenom kraju objekt se rekonstituira i izvršava se prvobitno tražena operacija. Ovo je također način za postizanje uravnoteženja opterećenja (za skupe zadatke, to jest: serializacija i deserializacija često nisu jeftini).

Gdje držite skupinu smrznutog graha koji je na taj način "ukiseljen"? Zašto, u JAR-u, naravno! Specifikacija JavaBeans opisuje JAR datoteku kao strukturiranu ZIP datoteku koja sadrži više serializiranih objekata, dokumentaciju, slike, datoteke klase itd., S manifestom koji opisuje što se nalazi u JAR-u. Datoteka JAR, koja sadrži mnogo komprimiranih malih datoteka, može se preuzeti u jednom komadu i dekomprimirati na kraju klijenta, čineći preuzimanje apleta (na primjer) učinkovitijim. (JAR je prilično očito igra na Unix formatu tar datoteke.)

java.ioPaket pruža objekt u seriju. Specifikacija JavaBeans opisuje format JAR datoteka.

Interoperacija

Neki su wag-ovi jednom rekli da je lijepa stvar sa standardima to što postoji toliko toga za izabrati. Komponentne tehnologije nisu iznimka. Postoje mnogi postojeći sustavi koji se temelje na OLE-u (ili njegovoj posljednjoj inkarnaciji, ActiveX-u), OpenDoc-u i LiveConnectu. JavaBeans je dizajniran da (barem na kraju) surađuje s ovim ostalim komponentnim tehnologijama.

Nije realno očekivati ​​da programeri odustanu od postojećih ulaganja u druge tehnologije i izvrše sve na Javi. Od izlaska Jave 1.1, prvi Beans / ActiveX "bridge" setovi postali su dostupni, omogućavajući programerima da Beans i ActiveX komponente neprimjetno povezuju u isti program. Sučelje Java IDL, koje će omogućiti Java razredima rad sa postojećim CORBA sustavima, trebalo bi izaći ove godine.

Iako most Beans / ActiveX i Java IDL nisu dio standardne distribucije JavaBeans, oni zaokružuju mogućnosti JavaBeansa kao industrijsku snagu, otvorenu tehnologiju za prijenosni komponentni softver.

Zaključak

Pokrili smo puno tla. U ovom ste članku saznali što su softverske komponente i zašto su vrijedne. Zatim ste saznali o raznim svojstvima JavaBeans-a, uključujući svojstva, prilagodbu, događaje, introspekciju, postojanost, pakiranje i interoperaciju s naslijeđenim komponentnim sustavima.

U sljedećem članku iz ove serije započet ćemo s korištenjem JavaBeans-a i detaljno proučiti svojstva Bean-a: kako oni funkcioniraju i kako vaš Beans učiniti prilagodljivim. Kako idemo dalje, razgovarat ćemo o novim osnovnim značajkama Java koje omogućuju Beans. Budući članci iz ove serije istražit će detalje tema o kojima smo razgovarali ovog mjeseca.

Mark Johnson je diplomirao računarstvo i elektrotehniku ​​na Sveučilištu Purdue (1986). Ima 15 godina iskustva u programiranju na C-u i dvije godine na C ++-u, i fanatični je poklonik pristupa Design Pattern u objektno orijentiranoj arhitekturi, softverskih komponenata u teoriji i JavaBeans-a u praksi. Tijekom posljednjih nekoliko godina radio je za Kodak, Booz-Allen i Hamilton, te EDS u Mexico Cityju, razvijajući aplikacije baze podataka Oracle i Informix za Meksički savezni izborni institut i za meksičke carine. Posljednju je godinu proveo radeći u NETdeliveryu, internetskom startupu koji se sada nalazi u Boulderu, CO. Mark je obojeni Unix programer i Java vidi kao kariku koja nedostaje između sada sveprisutnih desktop klijentskih sustava i otvorenih, distribuiranih, i prilagodljive pozadine poduzeća.Trenutno radi kao dizajner i programer za Object Products u Fort Collins, CO.

Saznajte više o ovoj temi

  • Izvrsnu usporedbu JavaBeansa i ActiveX-a možete pronaći u naslovnoj priči JavaWorlda tvrtke Merlin Hughes, JavaWorld , "JavaBeans i ActiveX idu glavom u glavu"

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

  • Sun Microsystems održava web mjesto za JavaBeans. Na ovoj stranici možete preuzeti najnoviji BDK (Beans Developer's Kit), pročitati JavaBeans specifikaciju, pregledati mrežni vodič i saznati najnovije informacije o grahu. //java.sun.com/beans
  • JavaBeans savjetnik , povremeno elektronske novine koje sadrže Grah vijesti i razvojne savjete, je arhiviran na

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

  • JavaBeans FAQ održava Sunce na

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

  • Konačno, omfaloskepsis je oblik introspektivne meditacije koja uključuje intenzivno promišljanje pupka. Pogledajte web stranicu Riječ dan i ispunite svoj svakodnevni govor nejasnim referencama! //www.wordsmith.org/awad/index.html

Ovu priču, "Pješački obilazak JavaBeans-a" izvorno je objavio JavaWorld.