Mittwoch, 16. Mai 2012

Elefanten auf Java: Der Elefant ist gelandet!

Steigen wir ohne große Worte direkt ein um zügig die notwendigen, aber vielleicht weniger interessanten 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?
Programme in PHP oder Java liegen bekannterweise 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 und 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 weiter gegeben 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.
*[Das JDK als Laufzeitumgebung zu bezeichnen ist übrigens nicht ganz korrekt, macht aber den Vergleich zu PHP deutlicher.]

Warum das Ganze? 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.

Download

PHP laden wir in einer aktuellen Version von php.net herunter. Das ZIP-Paket entpacken wir in einen beliebigen Ordner, hier c:/php. 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 [cmd.exe] 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 (Java Development Kit), für die tatsächliche Ausführung der damit kompilierten Programme, also für den zweiten Übersetzungsschritt, das JRE (Java Runtime Environment).
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.

Zwei Begriffe sollen nicht unerwähnt bleiben, da sie immer wieder auftauchen: Java SE und Java EE. Java EE ist vereinfacht ausgedrückt ein noch kompletteres Paket mit Servern und weiteren Komponenten, was uns an dieser Stelle nicht weiter interessieren soll. Java SE steht für die Java Standard Edition, eben die “einfache” Ausgabe von Java, mit der wir hier arbeiten wollen.

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 freundlicherweise bei der Installation selbst darum, dass sie gefunden wird.

Auch 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 Kommandzeile starten wir dann PHP mit der Datei “c:/php/php.exe c:/Hallo.php”.


Der Elefant ist gelandet

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 Order eine vollkommen neue Datei “c:\HalloWelt.class”. Herzlichen Glückwunsch zum ersten Bytecode - der Elefant ist gelandet!

Jetzt können wir den zweiten Schritt machen den die Laufzeitumgebung von PHP automatisch für uns übernommen hatte: Wir starten die tatsächliche Ausführung:

java -classpath c:\ HalloWelt


Wichtig ist die Angabe unseres Programms ohne Endung “.class” und zumindest in unserem einfachen Fall die Angabe mit “-classpath c:\” in der wir der Laufzeitumgebung mitteilen wo unsere Klasse tatsächlich liegt. Eine Angabe in der Form “java c:\HalloWelt” würde nicht funktionieren.

Keine Kommentare:

Kommentar veröffentlichen