Java und iSeries

Nov 11th, 2008 | By Redaktion | Category: Aufgabenstellungen, Management & IT

JavaTM und iSeries


von Torsten Hartig

Anwendungsmodernisierung auf den iSeries Systemen ist ein brandaktuelles Thema. Im Folgenden werden wir näher auf die JavaTM-Umgebung der iSeries-Systeme eingehen.

Warum JavaTM?
JavaTM ist eine objektorientierte Programmiersprache, die für den Einsatz in der heutigen vernetzten Welt entwickelt wurde, insbesondere für Internet-relevante Programme. Hier zeichnet sich die Programmiersprache durch ihre Plattformunabhängigkeit aus. Gerade im heutigen eBusiness finden wir eine vielfältige Systemlandschaft vor. Compiler traditioneller Programmiersprachen erzeugen aus dem vorhandenen Quellencode einen exakt auf die Plattform angepassten, ausführbaren Maschinencode. Dieser ist somit nicht portierbar auf andere Plattformen bzw. Betriebssysteme. Da es im Internet sehr häufig notwendig ist, von fernen Servern Programme herunterzuladen (Applets), und diese dann auf dem lokalen System auszuführen, stoßen die traditionellen Programmiersprachen hier an ihre Grenzen. Somit ist es notwendig geworden, bestehende Anwendungen zu „modernisieren", d. h. internetfähig zu machen. Hier nimmt JavaTM einen wichtigen Stellenwert ein.

JavaTM-Implementation auf der iSeries
Die Implementation von JavaTM und der iSeries, damals noch AS/400 e-Server, wurde im Februar 1998 bekannt gegeben, und ist seit dem OS/400 Release V4R2 verfügbar. Zu diesem Zeitpunkt zeigten viele Softwareentwickler starkes Interesse an „Open Standard"-Softwarelösungen. Durch die Einführung von JavaTM auf den iSeries-Servern wurde ein Weg gefunden, ein offenes Client/Server-System zur Verfügung zu stellen, ohne die Einzigartigkeit des Systems zu gefährden.

JavaTM Virtual Machine (JVM)
Die JavaTM Virtual Machine (JVM), auch JavaTM Runtime genannt, befähigt die jeweilige Plattform zur Ausführung von JavaTM Bytecode, welcher vorher durch den JavaTM Compiler erzeugt wurde. Da die JVM nur mit dem Bytecode arbeitet, können JavaTM-Objekte unmodifiziert auf jede andere Plattform portiert werden, die eine JVM haben. Die JVM befindet sich standardmäßig über dem Betriebssystem. SUN MicrosystemsTM hat JVMs entwickelt und vertreibt diese unter Lizenz an andere Anbieter. Es ist allerdings auch möglich, eine eigene JavaTM Virtual Machine zu entwickeln, und diese durch einen Zertifizierungsprozess „Java CompatibleTM" zu machen. Dieses hat IBM für die iSeries getan und zum ersten Mal im Betriebssystem Release V4R2 zur Verfügung gestellt. Die IBM-Entwickler haben die JVM unterhalb des Machine Interface (TIMI) integriert (Abbildung 1). Diese Art der Implementierung wurde gewählt, um eine bessere Performance im JavaTM -Umfeld zu erreichen. Hierzu war es notwendig, eine eigene JVM zu generieren und als „Java CompatibleTM„ zertifizieren zu lassen. Durch die auf der iSeries bereits vorhandene Objekt-orientierte Architektur passt das System sehr gut zu dem OO-Prinzip von JavaTM.

iSeries JavaTM Advanced Garbage Collection
Garbage Collection ist ein automatisch ablaufender Prozess innerhalb der JVM. Dieser löscht alle Objekte aus dem Hauptspeicher, die von keinem Programm mehr benötigt werden. Die JavaTM Entwickler müssen somit, im Unterschied zu anderen Programmiersprachen, nicht mehr für eine Freigabe des entsprechenden Hauptspeicherbereichs sorgen. Der Garbage Collection-Prozess stoppt, außer dem Collection-Thread, alle anderen Threads. Somit müssen alle JavaTM Programme auf die Beendigung des Collection-Prozesses warten, bevor diese dann weiterverarbeitet werden können. Dieses hat zur Folge, dass zu diesem Zeitpunkt unter Umständen sehr viel zur Verfügung stehende CPU-Kapazität nicht genutzt wird. Die Advanced Garbage Collection der iSeries arbeitet asynchron. Dieses hat zur Folge, dass nicht alle Programmthreads angehalten werden müssen, während die Collection läuft. Somit ist eine bessere Prossezornutzung während der Garbage Collection gewährleistet.

IBM iSeries Developer Kit for JavaTM (JDK)
Das IBM iSeries Devoloper Kit für JavaTM ist kompatibel mit den JDKs von SUN MicrosystemsTM. Es wird als Lizenzprogramm 57xx-JV1 ausgeliefert. Das IBM iSeries JDK ermöglicht die Entwicklung und Ausführung von Javaprogrammen auf dem iSeries System. Die Basisinstallation des Lizenzprogramms liefert die notwendigen QSHELL- und CL-Befehle, um mit Javaprogrammen auf der iSeries zu arbeiten. Über die Installation der Lizenzprogrammoptionen werden die verschiedenen Versionen der JDKs installiert. Diese enthalten eine Sammlung der Basisklassen für Javaprogramme.

iSeries-JavaTM-Transformer
Ein Bestandteil des Basis -Developer- Kits ist der iSeries JavaTM-Transformer. Um die vollen Performancevorteile der 64-Bit-Architektur der iSeries zu nutzen, kann vor der Ausführung der JavaTM-Applikation über den AS/400-JavaTM-Transformer ein optimiertes 64-Bit JavaTM-Objekt erstellt werden (Abbildung 2). Die Original JavaTM-Applikation bleibt dabei völlig unverändert. Der Anwender muss hierbei nichts tun. Das JavaTM-Objekt wird bei der ersten Ausführung der jeweiligen Klasse automatisch erstellt; allerdings standardmäßig nur mit einem geringeren Optimierungsgrad (10). Um diesen zu verbessern, gibt es den Befehl CRTJVAPGM. Hier kann zwischen verschiedenen Optimierungsstufen gewählt werden, zur Verfügung stehen die Optimierungsstufen 10, 20, 30, 40. Die niedrigen Stufen sind von Nutzen, wenn die Klasse während der Entwicklung zu Testzwecken ausgeführt wird. Dann ist es eventuell sogar notwendig, eine niedrigere Optimierungsstufe zu nutzen. Wie in Abbildung 2 zu sehen, ist es aber auch möglich, kein optimiertes Objekt zu erstellen, und somit die Klasse standardmäßig von der Runtime-Umgebung der JVM verarbeiten zu lassen. Hierzu wird dann im RUNJVA- oder CRTJVAPGM- Befehl der Optimierungsparameter auf *INTERPRET gesetzt.

IBM iSeries Developer Kit für JavaTM – Erweiterungen in OS/400 V5R1
Die Erweiterungen im OS/400 Release V5R1 für das Developer Kit für JavaTM, kurz JDK, wurden ausschließlich für das JDK Version 1.3 vorgenommen. Dieses ist die Option 5 aus dem o.a. Lizenzprogramm für die iSeries. Die Erweiterungen sind konzeptionell- und sicherheitsrelevant.

Hier nun die beiden konzeptionellen Erweiterungen.
Mit dem JDK 1.3 ist es jetzt möglich, über die getSystemTimeZoneID()-Methode die Zeitzone der JVM zu setzen. JavaTM Systemproperties legen die Umgebung fest, in welcher das Javaprogramm ausgeführt wird. Sie sind vergleichbar mit den Systemwerten und Umgebungsvariablen im OS/400. Im JDK 1.3 sind neue Properties hinzugekommen, welche z.B. das Debuggen von Programmen einfacher machen. Nähere Informationen hierzu sind auf der iSeries Information Center CD enthalten. Im Bereich der Sicherheit wurde der Java Authentication and Authorization Service (JAAS) in das JDK 1.3 für das OS/400 Release V5R1 integriert. Es bietet die Möglichkeit, nicht mehr nur codebasierende Zugriffsberechtigung zu erhalten, sondern den Zugriff darüber zu steuern, wer das Programm ausführt. Desweiteren verfügt das JDK 1.3 unter OS/400 Release V5R1 jetzt über den SUN MicrosystemsTM Standard JavaTM Cryptography Extension (JCE) 1.2. Dieses Tool liefert die Möglichkeit der Datenverschlüsselung, Schlüsselgenerierung und Schlüsselvereinbarung.

IBM Toolbox für JavaTM
Die IBM Toolbox für JavaTM beinhaltet Klassen, die dazu benutzt werden, auf Ressourcen der iSeries zugreifen zu können. Dieses geschieht über die Client Access Host Server, wobei eine Nutzung von Client Access nicht zwingend notwendig ist. Jeder Server auf dem System läuft in einem separaten Job und hat somit seine eigene Socket-Connection, um Daten zu senden oder zu empfangen. Da es sich hierbei um JavaTM-Klassen handelt, können diese von jeder Java-fähigen Plattform ausgeführt werden. Die Toolbox wird eingesetzt, um Client/Server Applikationen zu entwickeln. Hierbei kann es sich um Programme handeln, die auf dem Client laufen und auf Ressourcen der iSeries zugreifen müssen, oder aber um Server-basierende Programme auf dem iSeries System. Die IBM Toolbox für JavaTM wird seit dem OS/400 Release V4R2M0 als kostenfreies Lizenzprogramm zu Verfügung gestellt. Zusammenfassend bietet die Toolbox ein Javapacket an zu dem Zweck, dass eine internetfähige Anwendung die Daten und Ressourcen verändern bzw. nutzen kann. Die IBM Toolbox für JavaTM wird mit dem Lizenzprogramm 57xx-JC1zur Verfügung gestellt.

IBM Toolbox für JavaTM – Erweiterungen in OS/400 V5R1
Seit die Toolbox in OS/400 V4R2 auf der iSeries eingeführt wurde, sind bei jedem Release stetig Erweiterungen bzw. Verbesserungen eingeflossen. Dieses gilt natürlich auch für das neueste OS/400 Release V5R1. Die jeweiligen Erweiterungen/Verbesserungen werden in Modifikationsstufen eingeteilt, im Release V5R1 ist die Modifikationsstufe 4 implementiert Ab dieser Stufe stellt die Toolbox dem Anwender ein neues Javapacket mit der Bezeichnung com.ibm.as400.resource zur Verfügung. Für sogenannte „list-based operation" liefert dieses Package mehr Funktionen und reagiert robuster als das für solche Funktionalitäten vorher verwendete com.ibm.as400.access-Package.

In bereits vorhandenen Packages wurden neue Klassen hinzugefügt.
Hierdurch stehen folgende neue Funktionalitäten zur Verfügung, die in den Packages .access, .html, .servlet und .vaccess integriert wurden:

  • Textkonvertierung von bidirektionalen Sprachen wie Arabisch oder Hebräisch zwischen den iSeries und JavaTM Formaten.
  • Nutzung von Connection-Pools . Dieses kann die Performance der Anwendung erhöhen, da bereits bestehende Verbindungen zur Datenbank mehrfach genutzt werden können und nicht immer wieder neu aufgebaut werden müssen.
  • Es sind jetzt Klassen vorhanden die innerhalb eines Javaprogramms folgende zusätzliche HTML-Tags verarbeiten können: Headings, Meta Tags und Lists.
  • Es ist jetzt möglich den Inhalt des IFS als HTML-Liste oder als hierarchische Baumstruktur darzustellen.
  • Grafische Darstellung von JDBC-Datenquellen und benutzerdefinierten Ressourcen.
  • Anzeigen jeder Ressource innerhalb einer Servletverarbeitung.
  • Unterstützung für die JDBC 2.0 Optional Packages Extensions
  • Arbeiten mit iSeries Environmentvariablen
  • Anfordern einer Lizenz für ein installiertes Produkt auf dem iSeries System
  • Abfragen und verändern der Konfiguration der AS/400 NetServer-Komponente
  • Ping der Host Server von einer Befehlszeile oder aus einem Programm heraus

An bereits vorhandene Klassen wurden Erweiterungen vorgenommen welche folgende Funktionalitäten zur Verfügung stellen:

  • Verbesserungen im IFS -Anzeigeprozess
  • Es wurden Methoden in die CommandCall, ProgrammCall und ServiceProgrammCall Klassen eingefügt. Diese lassen eine Abfrage der JobID des aktuell laufenden Jobs zur Ausführung eines Befehls, Programms oder Service-Programms zu. Es ist jetzt auch möglich, den Aufruf eines Befehls, Programms oder Service-Programms über den gleichen Thread wie die Anwendung zu machen. Diese neuen Methoden haben außerdem die Möglichkeit zu zeigen, ob ein Befehl Programm oder Service Programm „thread save" ist.
  • Herstellen einer gesicherten Verbindung zwischen Proxy-Client und Proxy-Server über SSL.
  • Erstellen von benutzerdefinierten Systemwertgruppen
  • Eine verbesserte Zugriffsmöglichkeit auf den erweiterten Nachrichtenhilfetext

Die IBM Toolbox für JavaTM in der Modifikationsstufe 4 liefert neue Funktionen:

  • Schnellere Stringumsetzung. Die Toolbox beinhaltet jetzt über 100 Umsetzungstabellen. Sollte JavaTM nicht die richtige Umsetzungstabelle zur Verfügung stellen können, wird diese dann vom iSeries Server aus der Toolbox heruntergeladen.
  • Besserer NLS Support für System- und Fehlermeldungen.
  • Für die Verbindung zwischen Proxy-Client und Proxy-Server steht jetzt auch die Unterstützung für das HTTP-Tunneling-Protokoll zur Verfügung.

Die grafische Komponente der Toolbox beinhaltet in V5R1 folgende Neuerungen:

  • Die Panel Definition Markup Language (PDML)-Umgebung kann jetzt die Java Help- Komponente nutzen.
  • Der GUI-Builder bietet jetzt eine contextgestützte Hilfefunktion.
  • Vorgenommene Veränderungen im MessageViewer erlauben es jetzt, Hilftexte der 2. Ebene abzurufen und diese in die eigene detaillierte Hilfe im HTML einzubinden.

Mit diesen Erweiterungen wurde die ohnehin schon leistungsfähige Java-Umgebung auf der iSeries noch verbessert. Somit ist und bleibt der iSeries Server eine der besten Java -Maschinen.

Tags: , , , , , , , , , , , , ,

Leave Comment