JAR erstellen

Eine kurze Anleitung, wie eine JAR (Java ARchive) Datei aus Java Source Code generiert wird.

Wir verwenden folgenden Code um ein Beispielprogramm zu erzeugen, das „Hello World!“ auf der Kommandozeile ausgibt:

$: vi HelloWorld.java
/**
* The HelloWorld class implements an application that
* simply prints "Hello World!" to standard output.
*/
class HelloWorld {
  public static void main(String[] args) {
    System.out.println("Hello World!"); // Display the string.
  }
}

Um nun daraus eine lauffähige *.jar Datei zu machen, muss als erstes ein MANIFEST erstellt werden. Dieses beinhaltet den Namen der Hauptklasse, die als Einstiegspunkt des Programms verwendet werden soll. Der Name der MANIFEST Datei spielt dabei keine Rolle, Java passt ihren Namen automatisch bei der Erstellung der JAR Archivs an.

$: vi manifest.txt
Main-Class: HelloWorld

Im nächsten Schritt kompilieren wir den Quellcode der HelloWorld.java Datei in ausführbaren Bytecode:

$: javac HelloWorld.java

Und als letztes packen wir alles zusammen in ein helloworld.jar Archiv. Weitere Dateien können durch ein Leerzeichen getrennt hinzugefügt werden. Sollte es sich um ein Verzeichnis handeln, so wird dieses rekursiv hinzugefügt:

$: jar -cvfm helloworld.jar manifest.txt HelloWorld.class

Et voilà, schon haben wir unser ausführbares „Hello World!“ Java Programm:

$: java -jar helloworld.jar
Hello World!

JAR vs. WAR vs. EAR

Die Unterschiede der Java Archive JAR, WAR und EAR kurz und knackig zusammengefasst.

JAR

Java Archive beinhalten *.class Dateien, Bibliotheken, statische Dateien und ein optionales META-INF/MANIFEST.MF. Dieses optionale MANIFEST.MF kann Versionsinformationen und andere Beschreibungen der Archivs beinhalten.

WAR

Web Archive beinhalten eine vollständige Java Web Applikation, die auf einem Servlet Container wie zBsp. Apache Tomcat deployed werden kann. Das Archiv enthält alle dazu notwendigen statischen als auch *.jsp, *.css, *.js oder *.jar Dateien. Zusätzlich dazu besitzt das Web Archiv ein WEB-INF/web.xml Deployment Descriptor, der dem Servlet Container mitteilt, wie das Archiv korrekt deployed wird.

EAR

Enterprise Archive können mehrere *.war und *.jar Dateien beinhalten und vereinfachen so das Deployment komplexer Enterprise Applikationen.