JavaBeans
JavaBeans - komponenty programowe dla środowiska Java opracowane w latach 90. przez firmę Sun Microsystems, będące niezależnymi modułami wywoływanymi i uruchamianymi w programach Java. W praktyce są to klasy napisane w określonej konwencji.
Specyfikacja JavaBeans firmy Sun definiuje je jako: "wielokrotnie używalne komponenty, które mogą być manipulowane wizualnie przez narzędzia do tworzenia oprogramowania".
Stosowane początkowo wyłącznie do tworzenia interfejsów programowych po stronie klienta, doczekały się też swoich odpowiedników po stronie serwera tj. Enterprise JavaBeans. Mimo podobnej nazwy Enterprise JavaBeans realizują zasadniczo różną technologię - rozszerzają one model komponentów JavaBeans o programowanie transakcyjne i komunikację w otoczeniu rozproszonym.
Konwencje dla JavaBeans
Aby klasa mogła funkcjonować jako JavaBean należy przestrzegać pewnych konwencji w nazwaniu metod, konstrukcji klasy i jej zachowania. Dzięki przyjęciu tych konwencji narzędzia do tworzenia oprogramowania są w stanie manipulować, łączyć i używać JavaBeans w różnych projektach.
Główne konwencje:
- Konstruktor klasy musi być publiczny i nie może posiadać parametrów.
- Atrybuty klasy muszą być dostępne za pomocą metod pośredniczących (get, set itp), które muszą mieć odpowiednio skonstruowane nazwy.
- Klasa powinna być serializowalna.
- Klasa nie powinna zawierać metod obsługi zdarzeń (ang. event-handling)
Aby udostępnić obsługę wymaganych zdarzeń, klasa JavaBean jest jednak zmuszona do używania pewnych standardowych klas i interfejsów, tak że w tym punkcie nie ogranicza się ona tylko do nazywania swoich metod zgodnie z przepisaną konwencją! Przykładem zdarzenia jest zmiana tzw. "własności związanej": w tym wypadku muszą być o tym zdarzeniu poinformowane inne obiekty tzw. obserwatorzy. Przy zmianie tzw. "własności ograniczonej" obserwatorzy mogą zgłosić veto.
Najważniejsze pakiety graficzne dla języka Java jak AWT, Swing i SWT używają konwencji JavaBeans w swoich komponentach, co pozwala edytorom interfejsów graficznych (GUI) jak np. Eclipse Visual Editor, na wizualizację ich wewnętrznych parametrów przez standardowe metody JavaBeans: get() i set().
Przykład
// KtosikBean.java
public class KtosikBean implements java.io.Serializable // -> konwencja nr 3
{
private String nazwisko;
private boolean programista;
// Domyślny konstruktor -> konwencja nr 1
public KtosikBean() {}
// get/set -> konwencja nr 2
public String getNazwisko() {
return this.nazwisko;
}
public void setNazwisko(String nazwisko) {
this.nazwisko = nazwisko;
}
// dla zmiennych boolowskich zamiast get używa się is
public boolean isProgramista() {
return this.programista;
}
public void setProgramista(boolean programista) {
this.programista = programista;
}
}