Ohjelmointi

Kävelykierros JavaBeans

Edellinen 1 2 Sivu 2 Sivu 2/2

Mitä JavaBeans on ja mitä se tekee

JavaBeans ei ole tuote, ohjelma tai kehitysympäristö. Se on sekä Java-ydinpaketti (java.beans), jota Beans voi käyttää laajennettujen toimintojen tarjoamiseen, ja asiakirjan ( JavaBeans-määritys), joka kuvaa luokkien ja käyttöliittymien käyttöä java.beans "Beans-toiminnot". Luokan määrittely on osa Java 1.1: n perusjulkaisua, joten sen käyttöä varten ei tarvitse asentaa muita ohjelmistoja. Papujen lisääminen vaati vain vähän Java-kielen muutosta sinänsä, vaikka ydinjulkaisuun lisättiin useita uusia ja kipeästi tarvittavia sovellusliittymiä Bean-ominaisuuksien tukemiseksi. Eritelmän lukeminen voi olla informatiivista, mutta sopimatonta. Onneksi se on valinnainen, jos ymmärrät jo, miten ja miksi käyttää JavaBeans-pakettia. Ehkä ymmärrät jo Beansin lukemalla viihdyttävän ja valaisevan artikkelisarjan JavaBeansista JavaWorld, esimerkiksi.

JavaBeans muuttaa kurssit ohjelmistokomponenteiksi tarjoamalla useita uusia ominaisuuksia. Jotkut näistä ominaisuuksista ovat erityisiä pavuille. Toiset, kuten sarjallisuus, voivat hakea minkä tahansa luokka, papu tai muuten, mutta ovat ratkaisevia Pavujen ymmärtämiselle ja käytölle.

Ohjelmistokomponenteilla on ominaisuudet, jotka ovat objektin attribuutteja. Mukauttaminen on papun määritys tiettyä tehtävää varten. Uusi tapahtumien käsittely Java 1.1 -malli luotiin osittain Beanin välisen viestinnän helpottamiseksi. IDE: t tai muut luokat voivat leikata pavut kutsutun prosessin avulla itsetarkastelu. Pavut voivat olla jatkui (eli sarjoitettu) tavuvirtoihin lähetystä tai varastointia varten, ja pysyvät pavut voivat olla pakattu "JAR-tiedostoihin" lataamisen ja käytön helpottamiseksi. Lopuksi pavut on suunniteltu toimimaan yhdessä helposti vanhojen komponenttitekniikoiden, kuten ActiveX ja LiveConnect, kanssa ja osallistu tapahtumiin Object Request Broker -järjestelmien, kuten CORBA, kanssa.

Katsotaanpa kutakin näistä ominaisuuksista hieman syvemmällä.

Ominaisuudet ja mukauttaminen

Ominaisuudet, kuten edellä todettiin, ovat pavun attribuutteja. Visuaaliset ominaisuudet voivat sisältää värin tai näytön koon. Muilla ominaisuuksilla ei ehkä ole visuaalista esitystä: esimerkiksi BrowserHistory Beanilla voi olla ominaisuus, joka määrittää tallennettavien URL-osoitteiden enimmäismäärän. Pavut paljastavat asettaja ja getter menetelmiä (kutsutaan "accessor methodiksi") niiden ominaisuuksien suhteen, jolloin muut luokat tai IDE: t voivat manipuloida tilaa. Beanin ominaisuuksien määrittämistä suunnittelu- tai ajon aikana kutsutaan räätälöinti.

Kehittäjällä on paljon valvontaa Beanin ominaisuuksien käyttöön ja muokkaamiseen. A yksinkertainen omaisuus, kehittäjä kirjoittaa kutsutun menetelmän setProperty () ja toinen soitti getProperty ().

Tässä sinä olisi olet nähnyt sovelman, mutta jostain syystä et voi.

Pylväsdiagrammi

Esimerkiksi, jos käytät Java-yhteensopivaa selainta, näet vasemmalla sovelman, joka käyttää pientä luokkaa nimeltä Pylväsdiagrammi. Pylväsdiagrammi on kahden painikkeen välinen värillinen palkki. Pylväsdiagrammi puuttuu vain yksi asia tulla papu: se ei toteuta käyttöliittymää java.io.Serialisoitavissa (koska useimmat selaimet eivät vielä käsittele Java 1.1: tä, joten esimerkkisovetti epäonnistuu.)

Lukuun ottamatta sitä, että se on sarjaliitettävä, Pylväsdiagrammi on yksinkertainen papu, vain hyvin harvoilla menetelmillä. Sillä on void setPercent (int pct), joka tulvii pohjaan pct prosenttia pylväästä punaisella. Menetelmä int getPercent () palauttaa papuun tallennetun nykyisen prosenttiosuuden (tämä on Pavun tila). setPercent () menetelmä myös kutsuu maalata uudelleen () jos se muutti prosenttiosuutta, niin että objektin visuaalinen esitys pysyy ajan tasalla.

Applet-koodi kutsuu setPercent (getPercent () + 10) kun +10% -painiketta napsautetaan aiheuttaen Pylväsdiagrammi lisätä prosenttiosuuttaan (jos se on <100%). Prosenttiosuus on esimerkki a Pavun omaisuus, setteri- ja getter-menetelmillä, jotka on nimetty JavaBeans-määrityksen mukaisesti. Kun tämä sarja jatkuu, muutamme tämän nöyrän pienen Pylväsdiagrammi hyödylliseen ohjelmistokomponenttiin, joka voidaan liittää moniin sovelluksiin.

Anturin arvo indeksoitu ominaisuus on taulukko. Indeksoitujen ominaisuuksien lisämenetelmät vastaanottavat ja palauttavat arvoryhmät skalaarien sijaan. Accessor-menetelmät saattavat heittää tarkistetut poikkeukset ilmoittamaan virhetilanteista.

Joskus on hyödyllistä, että toiminto tapahtuu, kun kohteen tietty ominaisuus muuttuu. Sitoutuneet ominaisuudet aiheuttaa tapahtumien lähettämisen muille kohteille, kun kiinteistön arvo muuttuu, jolloin vastaanotin voi mahdollisesti toimia. Joten SpreadSheet Bean voidaan määrittää määrittelemään PieChart Bean piirtämään itsensä uudelleen aina, kun laskentataulukon tiedot muuttuvat.

Usein kiinteistöjen arvot ovat laittomia muiden papujen tilan perusteella. Bean voidaan asettaa "kuuntelemaan" näitä rajoitetut ominaisuudet muita papuja, ja "veto" -muutokset eivät pidä siitä. Esimerkiksi ydinreaktorin ControlRodArray Bean saattaa haluta puuttua johonkin, joka yrittää muuttaa DrainReactorCorePump Bean -tilan ON-asentoon, jos ohjaustangot vedetään ulos. (Älä kokeile tätä kotona. Luultavasti kenenkään ei pitäisi käyttää JavaBeansia tällaisissa sovelluksissa vain vielä.)

Kun kehittäjä yhdistää Beansin yhdessä sovelluksen luomiseksi, IDE voi esittää ominaisuusarkin, joka sisältää kaikki Beanin ominaisuudet ja niiden nykyiset arvot. (Ominaisuusarkki on valintaikkuna, jolla asetetaan ja / tai tarkastellaan ominaisuuksia, kuten mitä saat valitsemalla valikosta Asetukset ...) Kehittäjä asettaa ominaisuudet graafisesti, jotka IDE kääntää kutsuina Beansin asettajille, pavun tilan muuttaminen. Tämä mukauttaa pavut tietylle sovellukselle.

Ominaisuusluetteloiden käyttö ei ole aina paras tapa käsitellä papujen mukauttamista. Joillakin pavuilla on tila, joka on liian monimutkainen, jotta sitä voidaan helposti manipuloida tällä tavalla. Muut pavut olisivat yksinkertaisesti siistimpiä, jos niiden perustamiseen olisi intuitiivisempi tapa. Kuvittele huono johtaja, joka haluaa vain tarkastella myyntiraportteja ja joutua selvittämään, mitä kirjoittaa ominaisuusarkin "ODBC-etälähde" ​​-tekstikenttään. Eikö olisikin hienompaa, jos hän voisi yksinkertaisesti vetää ja pudottaa DataSource Bean -kuvakkeen (tietysti räätälöity nimellä "Myyntidata", tietenkin) DataConnection-papulle, jolloin se konfiguroidaan automaattisesti? Bean-kehittäjä voi upottaa ominaisuusarkin itse Beaniin, ja IDE käyttää sitten tätä "mukauttajaa" Beanin mukauttamiseen.

Ominaisuudet ominaisuuksien manipuloimiseksi ja mukauttamiseksi ovat java.beans paketti.

Tapahtumien käsittely

Kaikki tämä Beanin välinen vuorovaikutus edellyttää heidän tavallaan kommunikoida. JDK 1.1 määrittelee uuden tapahtumamalli että luokat (eivät vain pavut!) käyttävät kommunikointiin. Itse asiassa tämä uusi tapahtumamalli on löytänyt tiensä Javan yleisimmin käytettyihin paketteihin: java.awt!

Uudessa tapahtumamallissa luokka rekisteröi kiinnostuksen toisen luokan aktiviteetteihin a: n avulla kuuntelijan käyttöliittymä. Itse asiassa kohde esine (asianomainen osapuoli) kertoo lähde esine (kiinnostava kohde), "Kerro minulle aina, kun niin ja niin tapahtuu." Kun niin ja niin tapahtuu, lähdeobjekti "ampuu" tapahtuman kohteeseen käynnistämällä kohteen tapahtumakäsittelijän alaluokalla EventObject argumenttina.

Tapahtumia voidaan käyttää sidottujen ja rajoitettujen ominaisuuksien toteuttamiseen. Yllä olevassa PieChart- ja SpreadSheet-esimerkissä PieChart "rekisteröi" kiinnostuksen kaikkiin SpreadSheetin (sanotaan) muutoksiin DataList omaisuus. Kun SpreadSheet muuttaa sitä DataList omaisuus, se kulkee a DataListChangedEvent (alaluokka alkaen EventObject), jossa ilmoitetaan, mikä muuttui jokaisen kiinnostuneen kuuntelijan tapahtumankäsittelymenetelmään. Kohde (Ympyrädiagrammi) tutkii sitten tapahtuman ja ryhtyy tarvittaviin toimiin.

Esimerkki ydinreaktorista toimii samalla tavalla; mutta siinä tapauksessa kohde veto-oikeudet muutos heittämällä poikkeus. Siten maailma pelastuu laaja-alaiselta radioaktiiviselta tuholta.

EventObject luokka voidaan laajentaa luomaan käyttäjän määrittelemät tapahtumat. Luokat voivat nyt määrittää ja käyttää uusia tapahtumatyyppejä viestien lähettämiseen toisilleen. Tämä tarkoittaa, että saman kontin sisällä juoksevat pavut voivat viestiä välittämällä viestejä ympäriinsä. Tämä auttaa erottamaan esineiden väliset riippuvuudet, jotka tiedämme olevan erittäin hyvä asia.

Käyttäjän määrittelemät (ja muut) tapahtumat johdetaan luokasta java.util.EventObject.

Itsetarkastus

Melko outo termi itsetarkastelu on Java-puhua luokan julkisten menetelmien ja jäsenten ohjelmallisen analysoinnin prosessille. Tätä prosessia kutsutaan myös joskus löytö. Uusi pohdintaa Java-ytimen mekanismi, joka voi pilkkoa objektin ja palauttaa kuvauksen sen sisällöstä, tekee itsetarkastelun mahdolliseksi. (Vaikka Java saattaa olla heijastava, jopa introspektiivinen, omphaloskepsis ei silti ole osa ydinjakelua.)

Olemme jo törmänneet yhteen tämän ominaisuuden sovellukseen. Edellä kuvattiin IDE, joka pystyi rakentamaan luettelon Bean-ominaisuuksista esitettäväksi kehittäjälle. Mistä IDE voi tietää, mitä ominaisuuksia pavulla on? IDE löytää pavun ominaisuudet kahdella tavalla: pyytämällä pavulta sen ominaisuuksien kuvausta tai leikkaamalla papu tutkimalla sitä.

Tyypillinen IDE aloittaa pyytämällä Beanilta BeanInfo-objektia, joka kuvaa muun muassa Beanin ominaisuuksia. IDE rakentaa sitten BeanInfo-objektin ominaisuusarkin. (Oletetaan, että papu ei tarjoa omaa mukauttajaa.) Jos papu ei osaa palauttaa BeanInfo-objektia, IDE tutkii sitten papua ja skannaa metodiluettelon nimille, jotka alkavat aseta ja saada. Se olettaa (sopimuksen mukaan), että nämä menetelmät ovat ominaisuuksien käyttöoikeuksia, ja luo uuden ominaisuusarkin olemassa olevien käyttöoikeusmenetelmien ja näiden menetelmien käyttämien argumenttien tyyppien perusteella. Joten, jos IDE löytää menetelmiä, kuten setColor (väri), Väri getColor (), setSize (koko)ja Koko getSize (), sitten se luo ominaisuusarkin ominaisuuksilla Väri ja Kokoja asianmukaisesti kirjoitetut widgetit niiden asettamista varten.

Tämä tarkoittaa sitä, että jos kehittäjä noudattaa yksinkertaisesti käyttöoikeusmenetelmien nimeämiskäytäntöjä, IDE voi määrittää automaattisesti, miten komponentille tehdään mukautusominaisuuslehti.

Itsetarkastelun suorittava pohdintamekanismi on uuden kielen ydinpaketissa java.lang.reflect.

Pysyvyys ja pakkaus

Usein on hyödyllistä "kylmäkuivata" esine muuntamalla sen tila läpinä tiedoksi, joka pakataan myöhempää käyttöä varten - tai lähetetään verkon kautta muualle käsittelemistä varten. Tätä prosessia kutsutaan sarjallisuus ja on uusi ominaisuus Java-ytimessä.

Yksi yksinkertaisimmista sarjakäytöistä on mukautetun papun tilan tallentaminen, jotta äskettäin rakennetun papun ominaisuudet voidaan asettaa oikein ajon aikana.

Sarjaus on myös komponenttiteknologian perusta, mikä tekee mahdolliseksi hajautetut prosessointijärjestelmät, kuten CORBA. Jos objektilla ei ole paikallisia tietoja, joita sen on tehtävä tehtävänsä suorittamiseksi, se voi lähettää itsensä Request Brokerille, joka sarjoittaa objektin ja lähettää sen muualle käsittelyä varten. Etäpäässä objekti rekonstruoidaan ja suoritetaan alun perin pyydetty toiminto. Tämä on myös tapa toteuttaa kuormituksen tasapainotus (kalliille tehtäville, toisin sanoen: sarjallisuus ja deserialisaatio eivät usein ole halpoja).

Missä pidät ryhmää pakastekuivattuja papuja, jotka on "peitattu" tällä tavalla? Miksi, tietysti JAR: ssa! JavaBeans-määrittely kuvaa a JAR tiedosto strukturoituna ZIP-tiedostona, joka sisältää useita sarjoitettuja objekteja, dokumentaatiota, kuvia, luokkatiedostoja ja niin edelleen selvä joka kuvaa mitä JAR sisältää. JAR-tiedosto, joka sisältää monia pakattuja pieniä tiedostoja, voidaan ladata kaikki yhtenä kappaleena ja purkaa asiakassovelluksesta, mikä tekee esimerkiksi appletien lataamisesta tehokkaampaa. (JAR on melko ilmeisesti Unix-näytelmä terva tiedosto muoto.)

java.io paketti tarjoaa objektin sarjallisuuden. JavaBeans-määrittely kuvaa JAR-tiedostojen muodon.

Yhteistyö

Jotkut heiluttajat sanoivat kerran, että standardien mukava asia on se, että on niin monta valittavaa. Komponenttiteknologiat eivät ole poikkeus. On olemassa monia olemassa olevia järjestelmiä, jotka perustuvat OLE: hen (tai sen uusimpaan inkarnaatioon, ActiveX: ään), OpenDoc: iin ja LiveConnectiin. JavaBeans on suunniteltu toimimaan (ainakin lopulta) vuorovaikutuksessa näiden muiden komponenttiteknologioiden kanssa.

Ei ole realistista odottaa kehittäjien luopuvan olemassa olevista investoinneista muihin tekniikoihin ja uudistavan kaiken Java-sovelluksessa. Java 1.1: n julkaisun jälkeen ensimmäiset Beans / ActiveX "bridge" -sarjat ovat tulleet saataville, jolloin kehittäjät voivat yhdistää Beansin ja ActiveX: n komponentit saumattomasti samaan sovellukseen. Java IDL -rajapinta, jonka avulla Java-luokat voivat toimia olemassa olevien CORBA-järjestelmien kanssa, on määrä ilmoittaa tänä vuonna.

Vaikka Beans / ActiveX-silta ja Java IDL eivät kuulu tavalliseen JavaBeans-jakeluun, ne täydentävät JavaBeanin ominaisuuksia teollisuuden vahvana, avoimen tekniikkana kannettaville komponenttiohjelmistoille.

Johtopäätös

Olemme peittäneet paljon maata. Tässä artikkelissa olet oppinut, mitkä ohjelmistokomponentit ovat ja miksi ne ovat arvokkaita. Sitten opit JavaBeanin ominaisuuksista, mukaan lukien ominaisuudet, räätälöinti, tapahtumat, itsetarkastelu, pysyvyys, pakkaus ja yhteistyö vanhojen komponenttijärjestelmien kanssa.

Tämän sarjan seuraavassa artikkelissa aloitamme JavaBeanin käytön ja tarkastelemme Bean-ominaisuuksia perusteellisesti: miten ne toimivat ja miten Beans-laitteesi voidaan muokata. Menemällä eteenpäin keskustelemme uusista Java-ydinominaisuuksista, jotka tekevät Beansista mahdollisuuden. Tämän sarjan tulevissa artikkeleissa kaivetaan yksityiskohtiin aiheita, joista keskustelimme tässä kuussa.

Mark Johnsonilla on tietokone- ja sähkötekniikan kandidaatti Purdue-yliopistosta (1986). Hänellä on 15 vuoden kokemus ohjelmoinnista C: ssä ja kaksi vuotta C ++: ssa, ja hän on fanaattinen omistaja suunnittelupohjan lähestymistavasta olioarkkitehtuurissa, ohjelmistokomponenteista teoriassa ja JavaBeansista käytännössä. Viime vuosien aikana hän on työskennellyt Kodakin, Booz-Allenin ja Hamiltonin sekä EDS: n palveluksessa Mexico Cityssä kehittäen Oracle- ja Informix-tietokantasovelluksia Meksikon liittovaltion vaalilaitokselle ja Meksikon tullille. Hän vietti viimeisen vuoden työskennellessään NETdelivery-palvelussa, joka on Internet-käynnistysyritys Boulderissa, CO. ja skaalautuvat yrityksen taustapisteet. Tällä hetkellä hän työskentelee suunnittelijana ja kehittäjänä Object Products -yhtiössä Fort Collinsissa, CO.

Lisätietoja tästä aiheesta

  • Erinomainen JavaBeans- ja ActiveX-vertailu löytyy Merlin Hughesin julkaisusta JavaWorld kansitarina, "JavaBeans ja ActiveX menevät päähän"

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

  • Sun Microsystems ylläpitää JavaBeans-verkkosivustoa. Tältä sivustolta voit ladata uusimman BDK: n (Beans Developer's Kit), lukea JavaBeans-spesifikaation, surffata online-opetusohjelman kautta ja saada uusimmat tiedot Beansista. //java.sun.com/beans
  • JavaBeans-neuvoja, satunnainen sähköinen uutiskirje, joka sisältää Beans-uutisia ja kehittäjien vinkkejä, arkistoidaan osoitteessa

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

  • JavaBeansin usein kysytyt kysymykset ylläpitämä Sun on

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

  • Lopuksi, omphaloskepsis on eräänlainen introspektiivinen meditaatio, johon liittyy voimakasta napan mietiskelyä. Tutustu Word A Day -sivustoon ja täytä päivittäinen puheesi hämärillä viitteillä! //www.wordsmith.org/awad/index.html

Tämän tarinan "Kävelykierros JavaBeaneilla" julkaisi alun perin JavaWorld.

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