Artikel

JDO praktisch

Nachdem im letzten Java Magazin viel Theorie über das OR-Mapping getrieben wurde, folgt nun die Praxis. Sehr interessant sind die Spezialisierungen der einzelnen Produkte, denn es sind durchaus gewisse Polarisierungen im Kreise der Wettbewerber erkennbar. Ein Streifzug über den JDO-Marktplatz unter den Blickwinkeln JDO-Support, Flexibilität, Mapping, Abfragen, Performance und Integration soll helfen, den nötigen Durchblick zu erhalten.

Generation MDA

In diesem Artikel wird gezeigt, wie durch die Kombination von MDA-konformer Softwareentwicklung und dem Einsatz von Generierungstechnologie die Entwicklung von Softwaresystemen erleichtert und beschleunigt werden kann. Gerd Wüthrich hat bereits im Artikel Der Klassen-Klon [1] einen Ansatz vorgestellt, wie mit Hilfe von XML-codierten Informationen und der XSLT-Transformation Java-Code generiert werden kann. Dabei wurden bereits die Vorteile, die durch den Einsatz von Generatoren entstehen, dargestellt. Den Nutzen von MDA-konformer Softwareentwicklung hat Philip Stube in seinem Artikel Einführung in die Model Driven Architecture (MDA) ausführlich erklärt [2].

Fährtenleser

SOAP (Simple Object Access Protocol) bietet mit einem neuen Kommunikationsprotokoll eine Lösung für eine vereinfachte Kommunikation im Web. Das Protokoll wird als zusätzliche Schicht auf einem Transportlayer wie z.B. TCP, UDP oder HTTP aufgesetzt und bietet dadurch alle Möglichkeiten der systemübergreifenden Kommunikation durch Botschaften. Bislang One-Way-Connection, versucht SOAP-RP diese Begrenzung aufzuheben und bietet nun auch so genannte Reverse-Channels zur Rückmeldung von Ereignissen und Antworten aller Art an den Sender der Botschaft.

Entwurfsmuster für XML und XSLT

In der objektorientierten Softwareentwicklung sind Entwurfsmuster ein beliebtes Hilfsmittel. Ihr Einsatz erleichtert die Lösung von Problemen durch Kategorisierung, abstrakte Beschreibungen und Implementierungsbeispiele. Für XML und XSLT wurden ebenfalls Muster gefunden und beschrieben.

Alberne Klammern?

Pascal is for building pyramids – imposing, breathtaking structures built by armies pushing heavy blocks into place. Lisp is for building organisms … – Alan Perlis

Die Programmiersprache Lisp hat die letzten 40 Jahre dynamisch gemeistert und darf als ausgereift bezeichnet werden. Lisp-Code kann sowohl interpretiert als auch kompiliert werden, was neben einer bequemen, inkrementellen Entwicklung auch eine vernünftige Ausführungsgeschwindigkeit ermöglicht. Lisp ist sehr viel weiter verbreitet als man denkt: Vom Finanzbereich bis zum Telekommunikationsanbieter findet man Erfolgsstorys von Lisp [Erfolg]. Die bekannteste dürfte wohl der Artikel des Lisp-Gurus Paul Graham [Viaweb] sein, der seinen (in Lisp programmierten) eCommerce Store Viaweb für $50 Millionen an Yahoo verkaufen konnte.

Die Verpuppung

Bereits bei der Vorstellung von Cocoon 1.8 Java Magazin war ein zweiter Entwicklungszweig innerhalb des Apache Open Source-Projekts Cocoon vorhanden. Der geistige Vater von Cocoon, Stefano Mazzocchi, begann die Version 2.0 von Cocoon im November 1999. Mit der Freigabe der Version 2.0 Ende letzten Jahres liegt nun eine stabile und leistungsfähige XML-Lösungsplattform vor. Das Cocoon-Projekt hat beschlossen nur noch diesen neuen Entwicklungszweig weiterzuführen, daher wird keine Versionsnummer im Namen geführt. Dieser 2-teilige Artikel stellt die neue Version von Cocoon vor und demonstriert anhand von einigen Beispielen die Einsatzmöglichkeiten. Der erste Teil stellt eine einführende Übersicht dar, der zweite wird sich tiefer mit den zugrundeliegenden Technologien beschäftigen.

Die Verpuppung

In Teil 1 unseres Artikels [1] stellten wir die neue Version von Cocoon [2] vor und demonstrierten anhand von einigen Beispielen die vielfältigen Einsatzmöglichkeiten dieser Open Source-Lösung. In diesem Teil werden wir zusätzliche Konzepte und Komponenten vorstellen, die es erlauben, Cocoon auch für komplexere Anwendungen zu verwenden. Einen Ausblick auf weitere Einsatzgebiete für Cocoon soll diesen Teil abrunden.

Kistenwelt

Mit einem DOM- oder JDOM-Parser lassen sich bekanntlich XML-Dokumente sehr bequem einlesen, jedoch zu einem gewissen Preis: Die Bequemlichkeit ist mit Behäbigkeit und Heap-Belastung zu bezahlen. Grund ist die gelieferte Baumstruktur, die oft nur genutzt wird, um an die darin enthaltenen Informationen zu kommen. Abhilfe verspricht, die Applikation direkt auf ein API von niedrigem Abstraktionsniveau (SAX2, kXML, …) aufzusetzen. Allerdings lässt sich eine gute Lösung ohne einige systematische Kenntnisse nicht während einer Tasse Kaffee in die Tasten klopfen. Hier will ich etwas Nachhilfe bieten: Ich zeige an einem Beispiel, wie man sowohl für das SAX2-API wie auch für das kXML-API geradlinig zu gut strukturiertem Code für das XML-Parsing gelangt, der sich zudem leicht um Code zur Verarbeitung der gelesenen Informationen anreichern lässt.

Das N im I/O

Mit der Java 2 Standard Edition (J2SE) 1.4. stehen dem Softwareentwickler neue Möglichkeiten zur Verfügung, wenn es um I/O-Zugriffe und Netzwerkfunktionen geht. Seit geraumer Zeit wird die Java-Plattform als Basis für Serversysteme genutzt, jedoch gab es immer wieder Stimmen, die mangelnde Skalierung und Performance beklagten und Erweiterungen im Java I/O forderten. Mit dem neuen Release hat Sun auf die Kritik reagiert und ein neues I/O-Modul in die Java-Plattform aufgenommen. Dieser Artikel zeigt anhand eines einfachen Programmbeispiels die neuen Konzepte der Netzwerkprogrammierung und einen Vergleich zur herkömmlichen Vorgehensweise.

Power aus der Turbine

Das Apache-Projekt Turbine [1] hat sich mittlerweile zu einem professionell einsetzbaren Framework zum Erstellen komplexer Web-Applikationen entwickelt. Im praktischen Umfeld erprobt, stellt es dem Java-Entwickler eine Vielzahl verschiedener Tools, Techniken und Frameworks zur Verfügung. Model View Controller (MVC)-basiert, bietet es eine interessante Alternative für Datenbankanwendungen mit HTML-Präsentationsschicht.

Gut gebettet

Möchte man SOAP-RP-Botschaften über bestimmte Transportprotokolle versenden, so muss man auf DIME als Bindung an das Protokoll zurückgreifen. Wählt man als Transportprotokoll z.B. TCP oder UDP, so wird die eigentliche SOAP-Botschaft in den DIME-Record eingebunden. DIME als Protokollbindung verfügt aber nur über drei Parameter, die den Inhalt gezielt beschreiben. Damit stellt DIME eine einfache, aber leistungsstarke Möglichkeit dar, SOAP-Botschaften in ein bestimmtes Transportprotokoll zu verpacken bzw. an dieses zu binden. Dieser Artikel beleuchtet DIME und seinen Aufbau und baut auf den Artikel SOAP RP aus der letzten Ausgabe des Java Magazins auf.

NetBeans 3.2 vs. Forte4J Internet-Edition 2.0

Aus dem Hause Sun werden mit NetBeans und Forte for Java gleich zwei Java-Entwicklungsumgebungen geliefert. Wesentlicher Unterschied zwischen den beiden ist die Tatsache, dass NetBeans Open Source und kostenfrei ist, während Forte4J eher als kommerzielle Distribution des NetBeans-Codes anzusehen ist. Wir untersuchen die beiden verwandten Werkzeuge im Hinblick auf Gemeinsamkeiten und Unterschiede.

Die Straßen von SF

Dicke bärtige Herren knattern mit ihren Harleys rund um das Moscone Center, ihre polierten Gefährte mit Fahnen verziert, auf denen das Sun-Logo prangt. In der Luft kreist ein Flugzeug, ein Spruchband hinter sich ziehend mit dem Titel Your Search is over, Codernauts – eine Anspielung auf eine aktuelle Werbekampagne von IBM, in welcher merkwürdig vermummte Typen (die Codernauten) auf der Suche nach der wirklichen Offenheit sind. Die Suche ist zuende, Sun Microsystems will die vollkommene Offenheit auf seiner JavaOne bieten, so viel sagt uns das Transparent.

Das Web wandelt die Begriffe

Object Design, Anbieter des objektorientierten Datenbanksystems Object Store, machte sich eines Tages daran, sich von einer Single-Product Company zu einem Unternehmen mit mehreren Produkten im Portfolio zu mausern. So entstanden der EJB-Daten-Cache Javlin sowie die Produktreihe eXcelon. Zwischenzeitlich setzte man voll und ganz auf die XML-Produktpalette, bevor sich die Strategie abermalig änderte. Philipp Lee, Präsident der Object Design Division beim Unternehmen eXcelon, erzählt, wo das Unternehmen heute steht.

XML leicht gemacht

Die Nutzung von XML-Dokumenten für die verschiedensten Aufgabengebiete gehört inzwischen zum festen Standard unter Java. Aufgrund der vielen Vorteile eines solchen Datenformates wurden einige Nachteile bei der Entwicklung in Kauf genommen. So wird vor allem das Lesen, Verändern und Schreiben immer wieder zu einem zeitaufwendigen Programmier-Problem. Die Java Architecture for XML Binding (JAXB) soll hier eine Lösung bieten.

Die Agenten sind los!

Nach den einführenden und grundlagenorientierten Beiträgen unserer Serie über Agenten in Java stellen wir Ihnen im vorliegenden Artikel das Agentensystem living markets dar, welches seit vier Jahren bereits auf Agententechnologien setzt. In diesem Zusammenhang beantworten wir die Fragen: Welche Grundfunktionalität muss ein Agentensystem für den professionellen Einsatz zur Verfügung stellen? Wie sieht ein Softwareprojekt bzw. die Softwareentwicklung mit Agentensystemen aus?

Zeig' mir wer Du bist

Java mangelte es bisher an einfachen Zugriffen auf betriebssystemnahe Dateieigenschaften. So unterscheiden etwa die Datei-Icons des bisherigen JFileChoosers ein Diskettenlaufwerk nicht von einer Festplatte oder einem CD-ROM-Laufwerk. Das wird mit der Java 2 Standard Edition 1.4 besser. Dieser Beitrag erläutert die neuen Fähigkeiten zur Anbindung eines Dateisystems an eine Java-Oberfläche und demonstriert sie am Beispiel eines Dialogs zur Verzeichnisauswahl.

Im Visier des Anwenders

Selbst in Zeiten von Drag&Drop bleibt die Option einer tastaturgestützten Bedienung für viele Anwendungssysteme ein ergonomisches Muss. Wer mit der Implementierung von Swing/AWT-Benutzerschnittstellen beschäftigt ist, sollte sich immer mit dieser Anforderung auseinandersetzen, kennt aber gleichzeitig auch die Tücken im Umgang mit dem Eingabefokus. Der Version 1.4 des JDKs wird nun ein überarbeitetes Fokusmanagement spendiert, das viele Vereinfachungen verspricht. Dieser Artikel zeigt aus pragmatischer Sicht, was sich geändert hat und wie die Vorteile der neuen Architektur genutzt werden können.

Java goes to space

Einen autonom operierenden Roboter aus Teilen der Lego-Mindstorms-Serie für die Internationale Raumstation ISS zu konstruieren, war die Aufgabe eines Wettbewerbs der dänischen Firma Lego. Im Dezember 2001 nahmen drei russische Kosmonauten auf der ISS einen kleinen Roboter in Betrieb, dessen zwei Steuerrechner in Java programmiert wurden. Hintergründe zu dieser Geschichte und die Möglichkeiten, Java für Robotik-Projekte einzusetzen, sollen am Beispiel der Lego-Mindstorms-Komponenten und der Java-VM leJos aufgezeigt werden.

Das Traumpaar Java und XML

XML hat sich beim Speichern von fast beliebigen Daten zum gängigen Dateiformat entwickelt. Es ist die Sprache, die von Firmen in der B2B-Kommunikation verwendet wird, und es hat herstellerspezifische Texdatei-Formate nahezu ersetzt (Beispiele: Einsatzdeskriptoren für EJB, Web-Konfiguration im WAR-Dateiformat, Dateierstellungs-Syntax für Ant, u. a.). Desweiteren taucht es immer häufiger in Datenbanken auf. Da es sich um einen offenen Standard handelt, wird eine Bindung der Unternehmen an herstellerspezifische Lösungen vermieden. Da der Einsatz von XML immer größere Verbreitung findet, gewinnen Werkzeuge, die dieses Format verstehen können, zunehmend an Bedeutung. Dieser Trend blieb in der Java-Gemeinde nicht unbemerkt. Es wurden sogar schon verschiedene APIs entwickelt, um Entwickler beim Arbeiten mit XML zu unterstützen. Dieser Artikel soll im Schnelldurchgang einen Überblick über einige der häufiger verwendeten APIs und Techniken verschaffen, die für das Arbeiten mit XML-Dokumenten entwickelt wurden.