Java

Die Programmiersprache, mit der die Programme entwickelt werden, die auf den Application Servern deployed werden. Java-Programme können auch standalone ausgeführt werden, brauchen also nicht notwendigerweise einen Application Server. Im Business Umfeld werden komplexe Anwendungen jedoch fast immer auf Application Servern betrieben, da hier ein permanenter Betrieb und das dynamische Deployment und Undeployment einzelner Komponenten möglich ist.

Java Beispiel#

Ein einfaches Java-Programm, das die Zeichenkette "Hello World!" auf der Kommandozeile ausgibt, sieht wie folgt aus:
    public class MyClass {
        public static void main(String[] args) {
            System.out.println("Hello World!");
        }
    }

Java Virtual Machine Sourcen#

Die Sourcen der Version 6.0 gibts unter http://download.java.net/jdk6/source/.

Certificate von Web-Seite im Keystore installieren#

Mit folgender Klasse kann ein Zertifikat einer HTTPS-Web-Seite im Keystore der lokalen Java-Installation hinzugefügt werden, sodass dieser Seite immer vertraut wird.

Java/InstallCert.class(info)

java InstallCert <address>:<port>

Source Code:

Java/InstallCert.java(info)

Proxy Konfigurieren#

Beim Starten der virtuellen Maschine können Parameter für das Verwenden eines Proxys übergeben werden:
java -DproxyHost=<host> -DproxyPort=<port>

Oder die System-Proxy-Einstellungen verwenden:

System.setProperty("java.net.useSystemProxies", "true");
Proxy proxy = ProxySelector.getDefault().select(new URI("http://intersult.com/")).get(0);

Java Debug Options#

-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y

SSL-Zertifikat#

Für HTTPS- und allgemein SSL-Verbindungen werden Zertifikate (Trusted Certificate) verwendet. Mit der Kommandozeile ist dies durch das Kommando keytool (%JAVA_HOME%/bin) mögich.

HTTPS-Zertifikate#

Der Keystore muss angegeben werden, eine Datei in der die Zertifikate gespeichert werden. Der Default-Keystore, der von Java benutzt wird, lautet %JAVA_HOME%\jre\lib\security\cacerts, das Default-Passwort lautet changeit.

AufgabeBefehl
Auflistenkeytool -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -storepass changeit -list
Importierenkeytool -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -storepass changeit -import -file <filename>

StartCom-Zertifikate#

StartCom ist bei den meisten neuen Browsern bereits enthalten, bei Java jedoch noch nicht. Kann durch folgende Kommandos hinzugefügt werden:
keytool -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -storepass changeit -import -alias startcom.ca -file ca.pem -trustcacerts
keytool -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -storepass changeit -import -alias startcom.ca.sub -file sub.class1.server.ca.pem -trustcacerts

Es handelt sich um zwei Zerfitikate in der Key-Chain. Die Dateien ca.pem und sub.class1.server.ca.pem können von http://www.startcom.org/ besorgt werden:

Speicher#

Java benutzt nur begrenzt Speicher. Falls eine Anwendung mehr Speicher braucht, muss dieser manuell erhöht werden. Insbesondere ist davon der sogenannte PermGen-Space betroffen, Speicher der dauerhaft belegt wird:
-Xmx512M -XX:MaxPermSize=256M

Zusätzlich kann das Entladen von Java-Klassen aktiviert werden:

-XX:+CMSClassUnloadingEnabled

Darüber kann das Verwenden des neuen Garbage-Kollektors noch Vorteile bringen:

-XX:+UseConcMarkSweepGC

Also alles zusammen:

-Xmx512M -XX:MaxPermSize=256M -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC

Code Metriken und Reporting#

Es gibt einige Tools um sich eine Übersicht über Abhängigkeiten und den Zustand von Code zu verschaffen. Praktisch sind Maven-Plugins, da diese automatisch heruntergeladen und ausgeführt werden:

JDepend#

Mit jdepend:generate kann ein Report generiert werden, hier ein Auszug:

Java/jdepend.PNG