Homepage
» Java
- Dienstag, 17. Oktober 2006, 16:06
- JAVA-Bibliotheken mit PHP nutzen unter Windows XP
- Dies ist eine kurze Anleitung zur Installation und eines kurzen Tests der PHP-JAVA-Bridge unter Windows XP. Damit lassen sich .jar-Bibliotheken in PHP einbinden.
Schön für alle die einen eigenen Entwickklungsserver haben bzw. einen ROOT-Zugriff auf die PHP-Konfiguration ihr eigen nennen. Für Leute auf einem Shared Webserver leider total unpraktikabel.
1, Download des Binary Paketes der PHP-JAVA-Bridge von der Seite http://sourceforge.net/projects/php-java-bridge
. Hauptseite: http://php-java-bridge.sourceforge.net/ 
2. Entpacken des ZIP-Archives
3. Ausführen der Datei test.bat. Die Datei entpackt die JavaBridge.war und erzeugt eine php.ini-Datei mit den Werten, die unter Punkt 5 in die php.ini eingetragen werden müssen.
4. Kopieren der Dateien JavaBridge.jar und php_java.dll aus dem erzeugten Ordner ext in den ext-Ordner der PHP Installation. (Die XAMPP-Version von apachefriends.org liefert bereits eine php_java.dll, die jedoch nicht ausreichend ist, daher muss sie ersetzt werden).
5. php.ini suchen und folgende Werte eintragen:
extension=php_java.dll
sowie
[java]
java.java_home=[Laufwerk:]\[PATH]\[TO]\jre1.5.0_08
java.java=[Laufwerk:]\[PATH]\[TO]\jre1.5.0_08\bin\javaw.exe
java.log_level=2
;java.log_file=ext/JavaBridge.log
6. Server-Neustart. Ausführen einer info.php
<?php
phpinfo();
?>
Dort sollte ein Eintrag unter java stehen, der anzeigt, dass der JAVA-Support aktiviert ist.
7. Ausführen eines Hello World Skripts
Die JAVA-Datei sieht wie folgt aus:
public class HelloWorld {
String test = "Hello World";
public void HelloWorld(){
}
public String getHelloWorld() {
return test;
}
}
Sie wird unter HelloWorld.java abgespeichert.
Nun wird die Konsole bemüht, um zunächst die .java-Datei in Bytecode umzuwandeln. Dies erfolgt über den Aufruf
javac HelloWorld.java
(Dabei ist davon auszugehen, dass man sich im entsprechenden Verzeichnis befindet)
Eine HelloWorld.class-Datei (Die Datei mit dem Bytecode für die Virtual Machine) wird erzeugt.
Danach wird eine JAR-Bibliothek erzeugt.
jar cvf HelloWorld.jar HelloWorld.class
Ergebnis: Eine Datei mit dem Namen HelloWorld.jar
Als nächstes wird ein PHP-Skript für den Aufruf der JAVA-Klasse angelegt.
Das PHP-Skript
<?php
//Einbinden der JAVA-Bibliothek
java_require($_SERVER['DOCUMENT_ROOT']."/path/to/HelloWorld.jar");
// Instantiieren der JAVA-Klasse
$myObj = new Java('HelloWorld');
// Anzeige des übergebenen Strings
echo (String) $myObj->getHelloWorld();
?>
java_require bindet externe Bibliotheken (.jar) ein. Der Aufruf kann über "http:", "ftp:" oder "file:" erfolgen.
Der Aufruf einer JAVA-Klasse erfolgt über den Aufruf new Java('Klassenname'). Ein Aufruf der entsprechenden JAVA-Klasse kann nur erfolgen, wenn diese über einen Konstruktor verfügt. Ansonsten erhält man eine Fehlermeldung:
Fatal error: Uncaught [o(Exception):"java.lang.Exception: CreateInstance failed: new HelloWorld. Cause: java.lang.ClassNotFoundException: Could not find HelloWorld in java_require() path. Please check the path and the SEL and File permissions. Responsible VM: 1.5.0_06@http://java.sun.com/" at: #-10 php.java.bridge.DynamicJavaBridgeClassLoader.loadClass(DynamicJavaBridgeClassLoader.java:448) #-9 java.lang.ClassLoader.loadClassInternal(Unknown Source) #-8 java.lang.Class.forName0(Native Method) #0 H:\htdocs\1\java\test.php(4): Java::__construct('HelloWorld') #1 {main}] thrown in H:\htdocs\1\java\test.php on line 4
Das Ergebnis:
Hello World
Dies ist wieder mal nur eine kleine Gedankenstütze für mich selbst. Für den Leser sei hinzuzufügen, dass man sicherlich spektakulärere Ausgaben erzeugen kann. Dennoch bietet die Einbindung von JAVA-Bibliotheken (bla) ungeahnte Möglichkeiten, wie z.B. das Erzeugen von PDF's über die Bibliothek FOP (http://www.sagehill.net/docbookxsl/InstallingAnFO.html
).
Weiterführende Links:
Gegensätze ziehen sich an
Java-Bibliotheken und -Anwendungen aus PHP heraus nutzen
PHP5 - Java integration on Win32, and examples
http://php-java-bridge.sourceforge.net/
http://php-java-bridge.sourceforge.net/documentation/PHP-API/html/java_8c.html#doc23
http://php.net/manual/de/ref.java.php
- Montag, 3. Juli 2006, 21:00
- Kopf einziehen
- Heise berichtet, dass die EADS
einen Militärjet gebaut hat, dessen Steuerung zu Teilen auf JAVA
basiert.
Meine Professorin hat immer gesagt, JAVA eigne sich für alles mögliche, aber nicht für zeitkritische Anwendungen.
Also, Kopf einziehen.
- Donnerstag, 22. Juni 2006, 17:52
- JAVA eBooks
- Liste mit JAVA eBooks
.
- Mittwoch, 21. Juni 2006, 19:14
- Ajax Remote Desktop
- Peter Damen hat ein sogenanntes Proof Of Concept
vorgelegt, bei dem ein Java Server einen aktuellen Screenshot des Hostrechners per HTTP auf jeden x-beliebigen Browser schickt, der das XMLHttpRequest-Object (im Volksmund AJAX) unterstützt.
Der Screenshpt wird nach einer einstellbaren Zeitspanne aktualisiert. Hier kommt also AJAX ins Spiel. Der in Einzelbilder zerlegte Screenshot wird mittels XMLHTTPRequest immer wieder neu aufgerufen.
Der Server benötigt eine installierte JAVA-Version auf dem Rechner.
Oben seht ihr einen Screenshot von meinem Desktop in Safari (Mac OSX).
Will man bspsws. die Auflösung des Screens ändern der gecaptured wird, tippt man
java -jar AjaxRemoteDesktop.jar -h:768 -w:1024
Zu finden ist der 40kb große Server unter http://www.peterdamen.com/ajaxrd/
- Mittwoch, 21. Juni 2006, 13:36
- Eclipse Leseliste
- Überblick über online must reads zu Eclipse
.





