JavaBeansJavaBeans — mechanizm komponentów wielokrotnego użytku dla platformy Java opracowany w latach 90. przez firmę Sun Microsystems. Pozwalają opakować wiele małych obiektów w jeden obiekt zwany ziarnem (ang. bean), przestrzegający ściśle określonych konwencji, który może być przenoszony i używany w różnych miejscach aplikacji. Każde ziarno to serializowalny obiekt z bezargumentowym konstruktorem, do którego właściwości można dostać się przy pomocy metod dostępowych. JavaBeans nie powinny być mylone z Enterprise JavaBeans, architekturą komponentową dla aplikacji rozproszonych, która mimo pewnych podobieństw realizuje inne zadania. KonwencjeKlasa obiektu ziarna nie jest wyróżniona w kodzie przez żaden specjalny znacznik. Wyróżniana jest ona na podstawie tego czy przestrzega ściśle określonych konwencji, które pozwalają na manipulację ziarnem innym partiom kodu oraz zewnętrznym narzędziom do wizualnego budowania oprogramowania. W każdym ziarnie możemy wyróżnić:
Dodatkowo, obiekt ziarna musi być serializowalny oraz posiadać bezargumentowy konstruktor. WłaściwościWłaściwość to prywatne pole obiektu ziarna, do którego dostęp jest kontrolowany przez metody dostępowe. Zakładając, że pole nosi nazwę class Foo implements Serializable {
private int bar;
private boolean joe;
public Foo() {
}
public int getBar() {
return this.bar;
}
public void setBar(int value) {
this.bar = value;
}
public boolean isJoe() {
return this.joe;
}
public void setJoe(boolean value) {
this.joe = value;
}
}
Wizualne narzędzia budowy kodu udostępniane przez wiele zintegrowanych środowisk programistycznych potrafią rozpoznać właściwości i umożliwić manipulację ich wartościami przy pomocy edytora właściwości obiektu. ZdarzeniaZiarno może generować różne zdarzenia, które mogą być przechwycone i obsłużone przez inne składniki aplikacji. Dzięki zdarzeniom możliwe jest nieinwazyjne wiązanie komponentów ze sobą. Zdarzenie
Specyfikacja nie precyzuje, w jaki sposób komponent emituje zdarzenie. Operacja ta może, ale nie musi być udostępniona na zewnątrz ziarna. Jeśli komponent reprezentuje kontrolkę graficznego interfejsu użytkownika, wygenerowanym zdarzeniem może być np. kliknięcie w kontrolkę. Tworząc obiekt implementujący wymieniony wyżej interfejs, możemy dodać do kontrolki własny kod obsługi kliknięcia. import java.util.EventListener;
import java.util.List;
import java.util.LinkedList;
class SomeControl implements Serializable {
private List<FooListener> fooListeners;
public SomeControl() {
this.fooListeners = new LinkedList<>();
}
public void addFooEventListener(FooListener listener) {
this.fooListeners.add(listener);
}
public void removeFooEventListener(FooListener listener) {
this.fooListeners.remove(listener);
}
public static interface FooListener extends EventListener {
public void processFoo();
}
}
Wizualne narzędzia budowy kodu potrafią rozpoznawać zdarzenia obsługiwane przez ziarno i udostępniać kreatory obiektów odpowiedzi. MetodyWszystkie pozostałe metody obiektu ziarna są traktowane jako operacje, które programista może wykonywać na komponencie. Nie ma tutaj żadnej konwencji, ani ograniczeń co do ich formy, roli i działania. Dodatkowe interfejsy programistyczneChoć ziarno można utworzyć jedynie poprzez przestrzeganie określonych konwencji nazewniczych, środowisko programistyczne udostępnia także dodatkowe, opcjonalne interfejsy oraz klasy pomocnicze. Pozwalają one na zaimplementowanie semantyki, której nie da się wyrazić poprzez odpowiednią strukturę kodu. Przykładem takiej semantyki jest zawężenie zbioru dopuszczalnych wartości dla właściwości, np. do przedziału liczb z zakresu 0-10, którego nie da się wyrazić typami prostymi. W metodzie Innym kierunkiem rozszerzania ziaren jest wykorzystanie interfejsów takich, jak ZastosowanieGłównym obszarem zastosowań komponentów JavaBeans są biblioteki tworzenia graficznego interfejsu użytkownika. Ziarnami JavaBeans są wszystkie kontrolki GUI w pakietach AWT, Swing oraz SWT. Linki zewnętrzne |