Das [JavaProtocol] ist ein Protocol für die [ProtocolFactory]. Es ist als Bestandteil der [Design-Utils].

!!!Anwendung
Das [JavaProtocol] wird eingesetzt, wenn URL-Zugriffe auf Classpath-Ressourcen erfolgen. Viele Komponenten sind heute so gebaut, dass die Übergabe von URLs erwartet wird.

Beim [Testen] können so Ressourcen geladen werden, ohne über HTTP-Protocol zu gehen. Dies kann beim Entwickeln von [Tests|Testen] für [HtmlClient] nützlich sein, da man auf einer statischen, gespeicherten Seite arbeiten kann.

!Vorteile zu File-URLs
Als Ersatz für File-URLs gibt es einige Vorteile:

* __Relativer Pfad:__ Der Pfad beginnt beim Classpath, zum Beispiel ist "/test.properties" auf allen Konfigurationen auffindbar.
* __Systemunabhängigkeit:__ Es spielt keinen Unterschied, ob die Angabe auf Windows, Unix oder anderen Maschinen gemacht wird.
* __Sicherheit:__ Wenn [Java] [Applications|Application] mit [Application Boundary Enforcement] laufen, wie dies im [Cloud Computing|http://de.wikipedia.org/wiki/Cloud-Computing] zum Beispiel bei [Google Application Engine Apps] der Fall ist, ist kein Zugriff auf das Dateisystem möglich (und auch nicht sinnvoll). __Anmerkung:__ Hier wird im Moment noch an der Kompatibilität gearbeitet.

!Vorteil zu HTTP-URLs
Als Ersatz für HTTP-URLs gibt es einige Vorteile:

* __Geschwindigkeit:__ Es wird keine TCP/IP-Verbindung aufgebaut, der Inhalt wird direkt gestreamt.
* __Sicherheit:__ Der Request verlässt nicht die Virtuelle Maschine.
* __Einfachheit:__ Es braucht kein Server gestartet zu werden, die Dateien sind direkt aus dem Classpath zugreifbar.
* __URL:__ Classpath-Ressourcen können direkt über einen URL übergeben werden und brauchen nicht kompliziert über Java-Code gestreamt werden.

!Vorteil gegenüber HttpUnitProtocol
In Fällen in denen es um die Bereitstellung von Streaming-Ressourcen geht und nicht um den Test von Web-Applications oder Servlets, kann [JavaProtocol] ein Ersatz für [ServletUnitProtocol] sein.

!!!Beispiele
!Entwicklung von Tests für HtmlClient
Das [JavaProtocol] kann beim Entwickeln von [Tests|Testen] für den [HtmlClient] nützlich sein. Die Tests können gegen statische HTML-Ressourcen entwickelt werden und die Navigations- und MockProzedur zunächst vermieden.

{{{
	ProtocolFactory.register(new JavaProtocol());
	URL url = new URL("java:/context.html");
	Page page = client.begin(url, null, false);
	Element table = page.getElement("/HTML/BODY/TABLE[2]/TBODY/TR[2]/TD[2]/TABLE[3]/TBODY/TR[2]/TD/BLOCKQUOTE/TABLE/TBODY/TR[2]/TD/BLOCKQUOTE/TABLE/TBODY");
        ...
}}}