© saicle/Shutterstock.com
Dickhäuter auf Koffein. Warum nicht?

Elefanten auf Java


Wussten Sie, dass es heutzutage nur noch wenige Elefanten auf Java gibt? Der Elefant ist nämlich nicht nur das Maskottchen von PHP, und Java gibt es auch nicht nur als Programmiersprache. Aber zurück zum eigentlichen Thema: Was kann man als PHP-Entwickler lernen?

Die Frage, was man als PHP-Entwickler lernen soll (oder kann), um sich weiter zu entwickeln, ist vermutlich schon hundertfach gestellt worden. Und so wie diese Frage unzählige Male gestellt wurde, so unzählig sind auch die möglichen Antworten. Eine Möglichkeit ist es, Java zu lernen. Abgesehen davon, dass diese Empfehlung genauso kritikwürdig und hilfreich ist wie jede andere Empfehlung auch, gibt es zumindest ein paar Gründe, die tatsächlich für Java sprechen. PHP und Java haben einerseits genügend Ähnlichkeiten, um nicht bei Null anfangen zu müssen, haben andererseits aber auch genügend Unterschiede und vor allem unterschiedliche Einsatzgebiete, um genug zum Lernen zu bieten. Beide Sprachen haben ihre Wurzeln in der C-Syntax. Egal ob man das mag oder nicht, aber es gibt kaum etwas Schlimmeres, als ständig zwischen verschiedenen Syntaxfamilien wechseln zu müssen.

Beide Sprachen haben ein Typsystem, das gegensätzlicher kaum sein könnte. Gerade für PHP-Entwickler kann es aber sinnvoll sein, sich mit dieser Thematik einmal genauer auseinanderzusetzen. Und sei es nur, um zu merken, dass der Zahlenbereich einer Integer-Zahl eben nicht unendlich ist. Wer schon einmal in diese Falle getappt ist, weiß was gemeint ist. Und wer Java kennt, wird in diese Falle kaum tappen. Nicht zu vergessen ist die gesamte Thematik „Android“: Wer sich als Entwickler damit auseinandersetzen möchte, hat kaum eine andere Wahl, als sich mit Java zu beschäftigen, zumal sich PHP für SL4A nach Aussagen des Entwicklers eine vielversprechende Onboard-Entwicklungsumgebung in einer Art Maintenance Mode befindet und zumindest zurzeit nicht mehr aktiv weiterentwickelt wird. Und selbst wer sich nicht von Java begeistern lassen sollte, kann sich zumindest beim nächsten Mal darüber freuen, dass vieles in PHP doch etwas schneller umzusetzen ist. Das ist ja auch etwas wert. Übrigens: Auch Nils Langner hat in seinem bekannten Blog phphatesme.com bereits vor längerer Zeit die Empfehlung für PHP-Entwickler gegeben, Java zu lernen [1].

Einführungen in Java gibt es wie Sand am Meer. Es soll deshalb auch nicht versucht werden, das Thema erschöpfend zu behandeln. Vielmehr soll ein kompakter Einstieg in Java ganz auf Basis vorhandener PHP-Kenntnisse geboten werden. Denn ausgehend von Bekanntem lernt es sich ja doch etwas leichter. Es ist Zeit, die ersten Elefanten nach Java zu verschiffen.

Der Elefant ist gelandet

Steigen wir ohne große Worte direkt ein, um zügig die notwendigen, aber weniger spannenden Grundlagen für ein erstes „Hallo Welt“ zu schaffen: die Installation und Konfiguration der Laufzeitumgebungen von PHP und Java. Wir konzentrieren uns dabei auf die Ausführung auf der Kommandozeile, komplexere Aspekte wie Webserver, Webseiten oder gar Applikationsserver lassen wir vorerst außer acht. So richtig retro eben.

Laufzeitumgebungen – das Elefantengehege

Programme in PHP oder Java liegen bekanntermaßen nicht als .exe-Dateien vor und können nicht direkt ausgeführt werden. Sie benötigen Laufzeitumgebungen, die den Programmcode interpretieren und für den jeweiligen Computer übersetzen. Bei beiden Systemen wird der Quelltext in einem ersten Schritt in eine Art neutralen Zwischencode kompiliert. Erst in einem zweiten Schritt wird dieser Bytecode in direkt ausführbaren Maschinencode übersetzt.

Die Laufzeitumgebung von PHP führt bei jedem Aufruf eines Programms immer beide Schritte aus, geht also immer wieder von dem aktuell vorhandenen Quelltext aus. Es wird für den Entwickler also gar nicht sichtbar, dass vor jeder Ausführung zwei eigentlich getrennte Übersetzungsvorgänge stattfinden.

Bei Java finden beide Schritte transparenter und erkennbar getrennt statt. Der Quelltext wird bei der Entwicklung durch eine eigene Laufzeitumgebung, dem JDK (Java Development Kit) in Bytecode kompiliert, der dauerhaft erhalten bleibt. Dieser Zwischencode kann als Ergebnis der Entwicklung weitergegeben werden und ist nicht mehr direkt lesbar. Erst bei der tatsächlichen Ausführung des Programms wird der Bytecode durch eine weitere Laufzeitumgebung, dem JRE (Java Runtime Environment), in ausführbaren Maschinencode übersetzt und gestartet.

Warum das Ganze? Das ist eine einfache Abwägung zwischen Performance, Dynamik und möglicher Optimierung. Ansonsten sei zu dieser Thematik auf umfangreichere Abhandlungen und Diskussionen (oder Streitereien) im Internet verwiesen – zu finden über die Suchmaschine Ihres Vertrauens. .NET von Microsoft arbeitet übrigens genauso wie Java in zwei getrennten Schritten.

Sattelt die Elefanten – Download und Installation

PHP laden wir für Windows in einer aktuellen Version von php.net herunter. Wir gehen davon aus, dass jemand, der unter Linux arbeitet, bereits ein Paket hat oder zumindest weiß, was an dieser Stelle zu tun ist. Das ZIP-Paket entpacken wir in einen beliebigen Ordner. Als Entwickler benennen wir dort die Datei php.ini-development in php.ini um. Damit sind grundlegende Einstellungen wie ausführlichere Fehlermeldungen bereits gemacht.

Damit wir beim Aufruf nicht immer den gesamten Pfad angeben müssen, tragen wir in der Umgebungsvariable PATH von Windows den Pfad zu PHP ein. Auf der Kommandozeile rufen wir PHP zum ersten Mal mit php.exe -v auf, um die Version abzufragen, oder mit php.exe -h, um eine kurze Hilfe anzeigen zu lassen.

Java scheint auf den ersten Blick etwas komplizierter zu sein, zumindest schrecken die vielen Abkürzungen anfangs etwas ab. Für die Entwicklung, also quasi den ersten Übersetzungsschritt, benötigen wir das JDK. Für die tatsächliche Ausführung der damit kompilierten Programme, also für den zweiten Übersetzungsschritt, das JRE. Herunterladen müssen wir übrigens nur das JDK; das notwendige JRE wird als Teil des JDKs mit ausgeliefert. Entweder holt man sich das JDK direkt über die etwas unübersichtlichen Seiten von Oracle oder sucht über Google nach dem Download. Als Anfänger ist man tatsächlich schneller über die Google-Suche am Ziel, was nicht gerade für die Seiten von Oracle spricht. Für Linux sei auch an dieser Stelle wieder auf die jeweilige Distribution verwiesen.

Nach der Installation kann es auch für Java sinnvoll sein, bestimmte Eintragungen in den Umgebungsvariablen von Windows vorzunehmen. Der Pfad zu dem JDK kann unter PATH in der Form c:\Java\jdk1.7.0\bin eingetragen werden. Die JRE kümmert sich bei der Installation selbst darum, dass sie gefunden wird. Bei Java machen wir einen gewagten Aufruf über die Kommandozeile in der Form java -version. Wir starten damit die JRE und lassen uns die installierte Version anzeigen.

Der Elefant trabt los

Wir erstellen mit einem fast beliebigen Editor eine Textdatei und speichern sie mit folgendem Inhalt unter einem beliebigen Dateinamen mit der Endung .php ab:

<?php echo "Hallo Welt"; ?>

Auf der Kommandozeile starten wir dann PHP mit der Datei c:/php/php.exe c:/Hallo.php. Mit dem gleichen Editor erstellen wir eine weitere Textdatei und speichern sie mit dem folgenden Inhalt und genau diesem Dateinamen HalloWelt.java ab:

public class HalloWelt { public static void main(String[] args) { System.out.println("Hallo Welt"); } }

Der Dateiname spiegelt zwingend den Namen der enthaltenen Klasse HalloWelt wieder. Eine beliebige Abweichung führt sofort zu einem Fehler. Auf der Kommandozeile starten wir das JDK, genauer gesagt den Java-Compiler, um für den „ersten Schritt“ unseren Bytecode zu erzeugen:

C:\Java\jdk1.7.0_02\bin\javac.exe c:\HalloWelt.java

Wenn alles funktioniert, haben wir jetzt im gleichen Ordner eine vollkommen neue Datei HalloWelt.class. Herzlichen Glückwunsch zum ersten Bytecode, de...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang