JavaBean

**JavaBean** on Java-ohjelmointikielellä toteutettu uudelleenkäytettävä ohjelmakomponentti, joita käytetään tiedon käsittelyyn. JavaBeanit ovat tavallisia luokkia, jotka noudattavat tiettyä nimeämiskäytäntöä. Nimeämiskäytännön noudattaminen mahdollistaa JavaBeanien sisältämän tiedon yhtenäisen käsittelyn erilaisissa työkaluissa.

JavaBeaneilla on kolme pääasiallista kriteeriä:

# Luokalla pitää olla julkinen oletusrakentaja; esimerkiksi luokalla Luokka pitää olla rakentaja public Luokka(). Tämä mahdollistaa luokkien instantaation työkaluissa.
# Luokan jäsenmuuttujien pitää olla luettavissa ja asetettavissa get/set-metodien kautta, ja näiden tulee olla nimetty tietyn kaavan mukaan. Esimerkiksi jäsenmuuttuja protected String nimi pitää olla luettavissa metodin public String getNimi() kautta, ja asetettavissa metodin public void setNimi(String nimi) kautta. Tämä mahdollistaa olion tietojen muuttamisen työkaluissa.
# Luokan pitää olla serialisoitavissa (implements java.io.Serializable). Tämä mahdollistaa olion tilan siirtämisen eri työkalujen välillä.

JavaBean ei ole ohjelmistokirjasto tai koodissa määritelty rajapinta, vaan pohjautuu kokonaan sovittuun käytäntöön.

## Ominaisuudet
;Introspektio
:introspektio on prosessi, jossa Beania analysoidaan sen kykyjen määrittämiseksi. Tämä on Java Beans -määrityksen olennainen ominaisuus, koska sen avulla toinen sovellus, kuten suunnittelutyökalu, voi saada tietoja komponentista.
;Ominaisuudet
:Ominaisuus on Beanin tilan osajoukko. Ominaisuuksille määritetyt arvot määrittävät kyseisen komponentin käyttäytymisen ja ulkonäön. Ne asetetaan setteri-menetelmällä ja ne voidaan saada getteri-menetelmällä.
;Muokkaus
:Mukauttaja voi tarjota vaiheittaisen oppaan, jota prosessin on noudatettava käyttääkseen komponenttia tietyssä kontekstissa.
;Tapahtumat
:Beanit voivat olla vuorovaikutuksessa EventObject EventListener mallin kanssa.
;Pysyvyys
:Pysyvyys on kyky tallentaa Beanin nykyinen tila, mukaan lukein Beanin ominaisuuksien arvot ja instanssimuuttujat pysyvään tallennustilaan ja hakea ne myöhemmin.
;Metodit
:Beanin tulee käyttää apumenetelmiä ominaisuuksien säilömiseen. Bean voi tarjota muita menetelmiä liiketoimintalogiikkaan, jotka eivät liity ominaisuuksien käyttöön.

## Hyödyt
* Beanin ominaisuudet, tapahtumat ja metodit voidaan nähdä toisessa sovelluksessa.
* Bean voi rekisteröityä vastaanottamaan tapahtumia muista objekteista ja voi generoida tapahtumia joita lähetetään näille muille objekteille.
* Apuohjelmistoa voidaan käyttää auttamaan beanin konfiguroimiseen
* Beanin konfiguraatioasetukset voidaan tallentaa pysyvään tallennustilaan ja palauttaa sieltä.

## Haitat
* Luokka, jossa on nolla argumentti konstruktööriä, instantoituu virheelliseen tilaan. Jos kehittäjä instantoi tällaisen luokan manuaalisesti (eikä automaattisesti jonkinlaisen kehyksen avulla), kehittäjä ei ehkä ymmärrä, että luokka on ilmennyt väärin. Kääntäjä ei voi havaita tällaista ongelmaa, ja vaikka se olisi dokumentoitu, ei ole taattu sitä, että kehittäjä näkee dokumentaation.
* JavaBeanit ovat luonnostaan muuttuvia, joten niiltä puttuu muuttumattomien objektien. tarjoamat edut.
* Gettereiden tekeminen jokaiselle ominaisuudelle ja setterit monille tai kaikille niistä voi johtaa valtavaan määrään vakiokoodia.

## JavaBeans API
JavaBeans-toiminnallisuuden tarjoavat joukko luokkia ja käyttöliittymiä `java.beans` paketissa.

## Lähteet