Java Reference
In-Depth Information
zung von Counter-Objekten wieder in Threads erfolgen. In Listing 6.7 wird aber lediglich
der entscheidende Punkt für dieses Beispiel gezeigt, nämlich die Erzeugung und Nutzung
eines Objekts der Klasse Counter durch die CounterClient-Komponente.
Listing 6.7 CounterClient-Klasse mit Erzeugung eines Counter-Objekts
package javacomp.prototype.application6;
import javacomp.prototype.application5.Counter;
import javacomp.prototype.framework.Start;
public class CounterClient
{
@Start
public void start()
{
System.out.println("CounterClient.start");
Counter c = new Counter(1000);
System.out.println("counter = " + c.increment());
}
}
Bei der Installation der CounterService-Komponente wird ein Objekt der Klasse CounterSer-
vice erzeugt. Da in der CounterService-Klasse die Klasse Counter nicht benutzt wird, muss
sie aufgrund des Lazy-Loading-Prinzips auch noch gar nicht geladen werden. Erst wenn die
CounterClient-Komponente geladen und die Start-Methode auf ein erzeugtes CounterClient-
Objekt angewendet wird, wird Counter benutzt. Erst dann wird die Klasse Counter, die zu
einer anderen Komponente (CounterService) gehört, geladen. Dass dies tatsächlich so ist,
kann man beobachten, wenn das Framework (s. Abschnitt 6.2) mit der Option „-verbose“
gestartet und somit für jede Klasse, die geladen wird, eine Meldung auf der Konsole ausge-
geben wird:
[Loaded javacomp.prototype.application6.CounterClient from file:...]
...
CounterClient.start
[Loaded javacomp.prototype.application5.Counter from file:...]
counter = 1001
An den Ausgaben kann man deutlich ablesen, dass die Klasse Counter erst geladen wird,
wenn die Start-Methode von CounterClient ausgeführt wird.
Selbstverständlich könnte man dieses Beispiel noch weiter vereinfachen, indem die Klasse
CounterService ganz weggelassen und die Klasse Counter als Einstiegsklasse der Counter-
Service-Komponente bestimmt wird. Dann würde die Klasse Counter logischerweise schon
bei der Installation der CounterSevice-Komponente geladen. Dies würde aber nichts daran
ändern, dass immer noch eine Klasse einer Komponente von einer anderen Komponente
genutzt wird, ohne dass Objekte dieser Klasse in der Registratur abgelegt werden.
 
Search WWH ::




Custom Search