Programavimas

Ekskursija pėsčiomis po „JavaBeans“

Ankstesnis 1 2 2 puslapis 2 puslapis iš 2

Kas yra „JavaBeans“ ir ką jis veikia

„JavaBeans“ nėra produkto, programos ar kūrimo aplinka. Tai yra pagrindinis „Java“ paketas (java.pupos), kurį Beansas gali naudoti teikdamas išplėstines funkcijas ir dokumentą ( „JavaBeans“ specifikacija), kuriame aprašoma, kaip naudoti klases ir sąsajas java.pupos paketą, skirtą „Pupelių funkcionalumui“ įgyvendinti. Klasės specifikacija yra „Java 1.1“ pagrindinio leidimo dalis, todėl norint ją naudoti nereikia įdiegti jokios papildomos programinės įrangos. Pridedant pupelių nereikėjo mažai keisti „Java“ kalbos per se, nors prie pagrindinio leidimo buvo pridėta keletas naujų ir labai reikalingų API, kad būtų palaikomos „Beans“ funkcijos. Perskaityti specifikaciją gali būti informatyvu, bet malonu. Laimei, tai neprivaloma, jei jau suprantate, kaip ir kodėl naudoti „JavaBeans“ paketą. Galbūt jūs jau suprantate „Beans“, perskaitę linksmą ir įdomų straipsnių ciklą apie „JavaBeans“ „JavaWorld“, pavyzdžiui.

„JavaBeans“ paverčia klases programinės įrangos komponentais, pateikdami keletą naujų funkcijų. Kai kurios iš šių savybių būdingos pupelėms. Kiti, pavyzdžiui, serializacija, gali kreiptis į bet koks klasės, pupelių ar kt., bet yra labai svarbūs norint suprasti ir naudoti pupeles.

Programinės įrangos komponentai turi savybes, kurie yra objekto atributai. Pritaikymas yra pupelės konfigūravimo procesas tam tikrai užduočiai atlikti. Nauja renginių tvarkymas „Java 1.1“ schema buvo sukurta iš dalies siekiant palengvinti ryšį tarp pupelių. Pupas gali išsklaidyti IDE ar kitos klasės per vadinamąjį procesą savistaba. Pupelės gali būti išliko (t.y., serijinis) į baitų srautus, skirtus perduoti ar saugoti, ir išliekančios pupelės gali būti supakuotas į „JAR failus“, kad būtų lengviau atsisiųsti ir pasiekti. Galiausiai, pupelės buvo sukurtos taip sąveikauti lengvai naudodami senas komponentų technologijas, tokias kaip „ActiveX“ ir „LiveConnect“, ir dalyvaukite sandoriuose su „Object Request Broker“ sistemomis, tokiomis kaip CORBA.

Pažvelkime į kiekvieną iš šių galimybių šiek tiek giliau.

Savybės ir pritaikymas

Savybės, kaip pažymėta aukščiau, yra pupelės atributai. Vizualinėse ypatybėse gali būti spalva arba ekrano dydis. Kitos ypatybės gali neturėti vizualinio atvaizdavimo: pavyzdžiui, „BrowserHistory Bean“ gali būti ypatybė, nurodanti maksimalų saugomų URL skaičių. Pupelės atidengia nustatytojas ir Getter metodus (vadinamus „prieigos metodais“) dėl jų savybių, leidžiančių kitoms klasėms ar IDE manipuliuoti savo būsena. Vadinamas pupelių savybių nustatymo procesas projektavimo ar vykdymo metu pritaikymas.

Kūrėjas labai kontroliuoja prieigą prie Beano savybių ir jų modifikavimą. Dėl paprastas turtas, kūrėjas parašo metodą, vadinamą setProperty () o kitas paskambino „getProperty“ ().

Čia tu būtų matėte programėlę, bet dėl ​​kažkokių priežasčių negalite.

Juostinė diagrama

Pavyzdžiui, jei naudojate „Java“ palaikančią naršyklę, kairėje pamatysite programėlę, kurioje naudojama maža klasė, vadinama Juostinė diagrama. Juostinė diagrama yra spalvota juosta tarp dviejų mygtukų. Juostinė diagrama trūksta tik vieno dalyko, kad taptum pupele: jis neįdiegia sąsajos java.io.Serializuojama (nes dauguma naršyklių dar nevaldo „Java 1.1“, todėl programėlės pavyzdys nepavyks.)

Išskyrus tai, kad jis gali būti serijinis, Juostinė diagrama yra paprastas pupelis, naudojant tik labai kelis metodus. Tai turi void setPercent (int pct), kuris užlieja dugną pct procentas juostos su raudona spalva. Metodas int getPercent () pateikia dabartinį procentą, saugomą Pupoje (tai Pupelių būsena). setPercent () metodas taip pat ragina perdažyti () jei pasikeitė procentas, kad vizualus objekto vaizdavimas išliktų atnaujintas.

Skambina programėlės kodas setPercent (getPercent () + 10) kai +10% spustelėjamas mygtukas, sukeliantis Juostinė diagrama padidinti jo procentą (jei jis yra <100%). Procentais yra a pavyzdys Pupelių turtas, su seterio ir getterio metodais, pavadintais pagal „JavaBeans“ specifikaciją. Tęsiantis šiai serijai, mes šį kuklų mažą pertvarkysime Juostinė diagrama į naudingą programinės įrangos komponentą, kurį galima prijungti prie įvairių programų.

Vertė indeksuojamas turtas yra masyvas. Indeksuotų ypatybių prieigos metodai vietoj skaliarų gauna ir grąžina reikšmių masyvus. „Accessor“ metodai gali pateikti patikrintas išimtis pranešti apie klaidų sąlygas.

Kartais naudinga, kad veiksmas įvyktų pasikeitus tam tikrai objekto savybei. Susietos savybės sukelti įvykių siuntimą kitiems objektams, kai pasikeičia turto vertė, tai gali leisti imtuvui atlikti tam tikrus veiksmus. Taigi, „SpreadSheet“ pupelė gali būti sukonfigūruota liepti „PieChart“ pupelei perbraižyti save, kai keičiasi skaičiuoklės duomenys.

Dažnai tam tikros savybių vertės yra neteisėtos, atsižvelgiant į kitų pupelių būklę. Šių „klausytis“ galima nustatyti pupelę suvaržytos savybės kitų pupelių, o „veto“ pakeitimai jai nepatinka. Pavyzdžiui, branduolinio reaktoriaus „ControlRodArray Bean“ gali norėti kištis į tuos, kurie bando pakeisti „DrainReactorCorePump Bean“ būseną į ON, jei ištraukiamos valdymo strypai. (Nebandykite to namuose. Tikriausiai niekas neturėtų naudoti „JavaBeans“ tokioms programoms tiesiog dar.)

Kai kūrėjas sujungia „Beans“ ir sukuria programą, IDE gali pateikti ypatybių lapą, kuriame yra visos pupelių savybės ir jų dabartinės vertės. (Ypatybių lapas yra dialogo langas, naudojamas norint nustatyti ir (arba) peržiūrėti ypatybes, pvz., Tai, ką gaunate pasirinkdami meniu Parinktys ... pakeisdamas Pupų valstybę. Tai pritaiko Pupelės konkrečiai paskirčiai.

Nuosavybių sąrašų naudojimas ne visada yra geriausias būdas pritaikyti pupeles. Kai kurių pupelių būsena yra pernelyg sudėtinga, kad būtų galima lengvai tokiu būdu manipuliuoti. Kitos pupelės būtų paprasčiau šaunesnės, jei būtų intuityvesnis būdas jas nustatyti. Įsivaizduokite varganą vadovą, kuris tiesiog nori peržiūrėti pardavimo ataskaitas ir turi išsiaiškinti, ką įvesti į nuosavybės lapo teksto laukelį „Nuotolinis ODBC duomenų šaltinis“. Ar nebūtų šauniau, jei ji galėtų tiesiog nuvilkti „DataSource Bean“ piktogramą (žinoma, pritaikytą etikete „Pardavimų duomenys“) ant „DataConnection Bean“, taip automatiškai sukonfigūruodama? „Beans“ kūrėjas gali įterpti nuosavybės lapą į patį „Bean“, o tada IDE naudoja šį „tinkintuvą“, kad pritaikytų pupelę.

Atitinkamos klasės, skirtos manipuliuoti ypatybėmis ir pritaikymu, yra java.pupos pakuotė.

Renginių tvarkymas

Visa ši pupelių sąveika suponuoja tam tikrą jų bendravimo būdą. JDK 1.1 apibrėžia naują renginio modelis kad klasės (ne tik Pupelės!) naudojasi bendraujant. Tiesą sakant, šis naujas įvykių modelis pateko į vieną iš plačiausiai naudojamų „Java“ paketų: java.awt!

Pagal naująjį renginių modelį klasė registruoja susidomėjimą kitos klasės veikla a būdu klausytojo sąsaja. Iš tikrųjų taikinys objektas (suinteresuota šalis) nurodo šaltinis objektas (dominantis objektas), „Praneškite man, kai atsitinka taip ir taip“. Kai taip nutinka, šaltinio objektas „paleidžia“ įvykį į taikinį, iškviesdamas tikslo įvykių tvarkytuvą su poklasiu „EventObject“ kaip argumentas.

Įvykiai gali būti naudojami susietoms ir suvaržytoms savybėms įgyvendinti. Aukščiau pateiktame „PieChart“ ir „SpreadSheet“ pavyzdyje „PieChart“ „registruoja“ susidomėjimą bet kokiu „SpreadSheet“ pakeitimu (tarkime) „DataList“ nuosavybė. Kai skaičiuoklė ketina ją pakeisti „DataList“ turto, jis praeina a „DataListChangedEvent“ (subklasė nuo „EventObject“), nurodant, kas pasikeitė kiekvieno suinteresuoto klausytojo įvykių tvarkytojo metodu. Taikinys („PieChart“) tada nagrinėja įvykį ir imasi atitinkamų veiksmų.

Branduolinio reaktoriaus pavyzdys veikia panašiai; bet tuo atveju taikinys veto pokytis metant išimtį. Taigi pasaulis yra išgelbėtas nuo plataus masto radioaktyvaus sunaikinimo.

„EventObject“ klasę galima išplėsti, kad būtų sukurta vartotojo apibrėžti įvykiai. Dabar klasės gali apibrėžti ir naudoti naujus įvykių tipus, kad galėtų siųsti pranešimus vieni kitiems. Tai reiškia, kad tame pačiame konteineryje bėgančios pupelės gali bendrauti perduodamos pranešimus. Tai padeda atsieti priklausomybę tarp objektų, kurie, kaip mes žinome, yra labai geras dalykas.

Vartotojo apibrėžti (ir kiti) įvykiai yra kilę iš klasės java.util.EventObject.

Savistaba

Gana keistas terminas savistaba yra „Java“ kalba kalbant apie programos viešųjų metodų ir narių programinio analizavimo procesą. Šis procesas taip pat kartais vadinamas atradimas. Nauja atspindys „Java“ šerdies mechanizmas, galintis išskleisti objektą ir pateikti jo turinio aprašymą, leidžia atlikti savistabą. (Nors „Java“ gali būti atspindinti, netgi introspektyvi, omfaloskepsis vis dar nėra pagrindinio paskirstymo dalis.)

Jau išbandėme vieną šios galimybės taikymą. Pirmiau aprašėme IDE, kuris galėtų sukurti „Bean“ savybių sąrašą, kurį galėtų pateikti kūrėjui. Kaip IDE gali žinoti, kokių savybių turi pupelė? IDE atranda pupelių savybes vienu iš dviejų būdų: paprašydamas pupelės aprašyti jos savybes arba išsklaidydamas pupelę ją apžiūrėdamas.

Tipiškas IDE prasidės paprašius „Bean“ pateikti „BeanInfo“ objektą, kuriame, be kita ko, aprašomos pupelių savybės. Tada IDE sukurs nuosavybės lapą naudodamas „BeanInfo“ objektą. (Tai daroma prielaida, kad pupelė nepateikia savo pritaikymo priemonės.) Jei pupelė nežino, kaip grąžinti „BeanInfo“ objektą, IDE tada tiria pupelę ir nuskaito metodų sąrašą vardams, prasidedantiems rinkinys ir gauti. Ji daro prielaidą (pagal susitarimą), kad šie metodai yra ypatybių prieigos elementai, ir sukuria naują ypatybių lapą, pagrįstą esamais prieigos prieigos metodais ir tų metodų argumentų tipais. Taigi, jei IDE randa tokių metodų kaip setColor (spalva), Spalva „getColor“ (), setSize (dydis)ir Dydis getSize (), tada jis sukurs ypatybių lapą su savybėmis Spalva ir Dydisir tinkamai įvesti valdikliai jiems nustatyti.

Tai reiškia, kad jei kūrėjas paprasčiausiai vadovaujasi prieigos prieigos metodų pavadinimo taisyklėmis, IDE gali automatiškai nustatyti, kaip sukurti komponento tinkinimo ypatybių lapą.

Refleksijos mechanizmas, atliekantis savianalizę, yra naujos kalbos pagrindiniame pakete java.lang.reflect.

Patvarumas ir pakavimas

Dažnai naudinga objektą „sausai užšaldyti“, paverčiant jo būseną į duomenų lemputę, kurią reikia supakuoti vėlesniam naudojimui - arba perduoti per tinklą, kad būtų galima apdoroti kitur. Šis procesas vadinamas serializavimas ir yra nauja „Java“ branduolio savybė.

Vienas iš paprasčiausių serializavimo būdų yra išsaugoti pritaikyto pupelių būseną, kad naujai sukonstruotas pupelių savybes būtų galima tinkamai nustatyti vykdymo metu.

Be to, serializavimas yra pagrindinis komponentų technologijos pagrindas, suteikiantis galimybę paskirstytojo apdorojimo schemoms, tokioms kaip CORBA. Jei objektas neturi vietos informacijos, kurios jam reikia, kad atliktų savo užduotį, jis gali pats išsiųsti užklausų brokerį, kuris suremontuoja objektą ir išsiunčia jį kitur apdoroti. Nuotoliniame gale objektas atkuriamas ir atliekama iš pradžių prašyta operacija. Tai taip pat būdas suvokti apkrovos balansavimą (atliekant brangias užduotis, ty: serializavimas ir deserializavimas dažnai nėra pigus).

Kur laikote tokiu būdu „marinuotus“ šaldytu būdu džiovintų pupelių grupę? Kodėl, žinoma, JAR! „JavaBeans“ specifikacijoje aprašoma: JAR failas kaip struktūrizuotas ZIP failas, kuriame yra keli serializuoti objektai, dokumentai, atvaizdai, klasės failai ir pan manifestas tai apibūdina tai, kas yra JAR. JAR failą, kuriame yra daug suspaustų mažų failų, galima atsisiųsti iš viso į vieną dalį ir išspausti kliento gale, kad būtų efektyviau atsisiųsti programėlių (pavyzdžiui). (Akivaizdu, kad JAR yra žaidimas „Unix“ degutas failo formatas.)

java.io paketas suteikia objektų serijinį. „JavaBeans“ specifikacijoje aprašomas JAR failų formatas.

Sąveika

Kai kurie vagišiai kartą pasakė, kad malonu, kad standartai yra tai, jog yra tiek daug, iš kurių galima rinktis. Komponentinės technologijos nėra išimtis. Yra daug esamų sistemų, pagrįstų OLE (arba naujausiu jos įsikūnijimu „ActiveX“), „OpenDoc“ ir „LiveConnect“. „JavaBeans“ sukurtas (bent jau galiausiai) sąveikauti su šiomis kitomis komponentų technologijomis.

Nėra realu tikėtis, kad kūrėjai atsisakys esamų investicijų į kitas technologijas ir viską atnaujins „Java“. Nuo „Java 1.1“ išleidimo tapo prieinami pirmieji „Beans“ / „ActiveX“ rinkiniai, leidžiantys kūrėjams sklandžiai susieti „Beans“ ir „ActiveX“ komponentus su ta pačia programa. „Java IDL“ sąsaja, kuri leis „Java“ klasėms veikti su esamomis CORBA sistemomis, turėtų pasirodyti šiais metais.

Nors „Beans“ / „ActiveX“ tiltas ir „Java IDL“ nėra įprasto „JavaBeans“ platinimo dalis, jie apibendrina „JavaBeans“ galimybes kaip pramoninę ir atvirą nešiojamųjų komponentų programinės įrangos technologiją.

Išvada

Mes įveikėme daug žemės. Šiame straipsnyje jūs sužinojote, kokie yra programinės įrangos komponentai ir kodėl jie yra vertingi. Tada sužinojote apie įvairias „JavaBeans“ savybes, įskaitant savybes, pritaikymą, įvykius, savistabą, patvarumą, pakavimą ir sąveiką su senomis komponentų sistemomis.

Kitame šios serijos straipsnyje mes pradėsime naudoti „JavaBeans“ ir nuodugniai išnagrinėsime pupelių savybes: kaip jos veikia ir kaip padaryti, kad jūsų pupelės būtų pritaikomos. Eidami aptarsime naujas „Java“ pagrindines funkcijas, kurios leidžia „Beans“. Būsimuose šios serijos straipsniuose bus gilinamasi į šį mėnesį aptariamų temų detales.

Markas Johnsonas turi kompiuterių ir elektrotechnikos bakalaurą Purdue universitete (1986). Jis turi 15 metų programavimo patirtį C ir dvejus metus C ++ programoje ir yra fanatiškas „Design Pattern“ požiūrio į objektinę architektūrą, programinės įrangos komponentų teorijos ir „JavaBeans“ praktikos atsidavėjas. Per pastaruosius kelerius metus jis dirbo „Kodak“, Booz-Alleno ir Hamiltono bei EDS Meksike, kurdamas „Oracle“ ir „Informix“ duomenų bazių programas Meksikos federaliniam rinkimų institutui ir Meksikos muitinei. Paskutinius metus jis praleido dirbdamas „NETdelivery“ - interneto paleistyje, esančioje Boulderyje, CO. Markas yra dažytas vilnos „Unix“ programuotojas ir mano, kad „Java“ yra trūkstama grandis tarp dabar visur esančių darbalaukio klientų sistemų ir atvirų, paskirstytų, ir keičiamos įmonės galinės pusės. Šiuo metu jis dirba „Object Products“ dizaineriu ir kūrėju Fort Collins, CO.

Sužinokite daugiau apie šią temą

  • Puikų „JavaBeans“ ir „ActiveX“ palyginimą galima rasti Merlin Hughes ' „JavaWorld“ viršelio istorija „JavaBeans ir ActiveX eina viena į kitą“

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

  • „Sun Microsystems“ prižiūri „JavaBeans“ svetainę. Šioje svetainėje galite atsisiųsti naujausią „BDK“ („Beans Developer's Kit“) rinkinį, perskaityti „JavaBeans“ specifikaciją, naršyti per internetinę pamoką ir sužinoti naujausią informaciją apie pupeles. //java.sun.com/beans
  • „JavaBeans“ patarėjas, atsitiktinis elektroninis informacinis biuletenis, kuriame pateikiamos „Beans“ naujienos ir kūrėjų patarimai, archyvuojamas

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

  • „JavaBeans“ DUK prižiūri Saulė yra

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

  • Pagaliau, omfaloskepsis yra introspektyvios meditacijos forma, apimanti intensyvų bambos apmąstymą. Peržiūrėkite „Word A Day“ svetainę ir užpildykite savo kasdienę kalbą neaiškiomis nuorodomis! //www.wordsmith.org/awad/index.html

Šią istoriją „Kelionių pėsčiomis po„ JavaBeans ““ iš pradžių išleido „JavaWorld“.