Java EE und Flex, Teil 1: Eine überzeugende Kombination

Adobe Flex wird zu einer beliebten Wahl für die Generierung der Client-Seite von Java-Unternehmensanwendungen. In diesem ersten von zwei Artikeln zeigt Dustin Marx, wie Sie mit Flex hochgradig interaktive Benutzeroberflächen bereitstellen können, die auf die Unternehmenslogik Ihrer Java EE-Anwendung zugreifen. Erhalten Sie eine praktische Einführung in die Perfektionierung eines einfachen Flex-Clients und ermöglichen Sie ihm dann die Kommunikation mit Ihrem Java EE-Server. Level: Anfänger

Mit Flex 3 haben Sie eine weitere Möglichkeit, browserbasierte Benutzeroberflächen für Ihre Java EE-Anwendungen zu erstellen. Wenn Sie noch nicht herausgefunden haben, wie einfach es ist, Java-Unternehmensanwendungen mit Flex Rich Clients hinzuzufügen, kann dieser Artikel als Einstiegspunkt dienen. Sie erfahren, welche Vorteile Flex für die Tabelle bietet, wie Sie Anwendungslayouts mithilfe der XML-Grammatik von Flex erstellen und wie Sie Ihren Flex-Client mit einer Java EE-Anwendung arbeiten lassen.

Java-Entwickler übernehmen Flex

Wir wissen, dass einige Java-Entwickler gegen Flex als Front-End-Technologie für Java EE resistent sind, aber es gibt ein starkes Argument dafür, Flex eine Chance zu geben. Der Autor Dustin Marx erläutert in einer Seitenleiste dieses praktischen Artikels die Faktoren, die die Einführung von Flex in der Java-Community vorantreiben.

Bevor ich Sie auffordere, Flex zu installieren und eine Beispielanwendung zusammenzustellen, betrachten wir die Vorteile der Verwendung von Flex als clientseitige Technologie. Flex bietet spezifische Vorteile für Java-Entwickler und einige allgemeinere. Wir werden uns beide ansehen.

Warum Flex wählen?

Die Einführung einer neuen Technologie bedeutet, eine Lernkurve anzunehmen, die überzeugend sein kann. Hier sind einige allgemeine Vorteile der Verwendung von Flex:

  • Sie können Flex-Code einmal schreiben und in jedem Webbrowser ausführen, für den ein Flash Player-Plugin vorhanden ist. Keiner der für JavaScript- oder Ajax-Anwendungen typischen Browser- oder Objekterkennungscodes ist erforderlich.
  • Die Ziellaufzeit (Flash Player 9 oder höher) ist in mehr als 95 Prozent der Webbrowser weltweit installiert.
  • Flex basiert auf Standards. Die Skriptsprache (ActionScript 3.0) hat Wurzeln in ECMAScript (dieselbe Spezifikation, die von JavaScript implementiert wurde), und die Layoutsprache ist eine spezifische XML-Grammatik namens MXML. Wenn Sie mit den zugrunde liegenden Standards vertraut sind, können Sie Flex relativ einfach erlernen.
  • Flex verfügt über einen erfrischend einfachen Mechanismus zum Binden der Eigenschaft eines Objekts in einer Flex-Anwendung an die Eigenschaft eines anderen Objekts in Flex. Dieses Suchtmerkmal wird allgemein als Eigenschaftsbindung bezeichnet . (JSR 295: Beans Binding soll diese Funktion zur Java-Sprache hinzufügen, ist jedoch in Java SE 7 nicht enthalten.)
  • Sie können das Flex-basierte Front-End mit jeder Back-End-Technologie verknüpfen, indem Sie Techniken verwenden, die eine lose Kopplung fördern. Flex bietet integrierte Unterstützung für die Kommunikation mit Back-Ends über herkömmliche HTTP- und SOAP-basierte Webdienste.
  • Flex bietet eine Vielzahl von Komponenten, Flash-Effekten (einschließlich Animation, Video und Audio) und Eingabehilfen, mit denen Sie einer Webanwendung auf einfache Weise reichhaltige und flüssige Erlebnisse hinzufügen können.

Flex für Java-Entwickler

Allgemeine Vorteile könnten ausreichen, um Sie für Flex zu begeistern, aber es gibt andere, die sich hauptsächlich oder vollständig an Java-Entwickler richten.

Ein solcher Vorteil ist die bemerkenswerte Ähnlichkeit zwischen Java und ActionScript 3.0 in Bezug auf Sprachfunktionen, Konzepte und Syntax. Die Sprachen verwenden ähnliche bedingte Anweisungen, Schleifensyntax und sogar Codierungskonventionen. (Es ist anzunehmen, dass ActionScript eher Java als JavaFX Script ähnelt.) Das Javadoc-ähnliche ASDoc-Dokumentationsgenerierungstool von Flex verwendet dieselbe Kommentarsyntax, die Sie in Java zum Generieren von Dokumentation verwenden. Die Paketstruktur von ActionScript bezieht sich auf die Verzeichnisstruktur genauso wie Java auf Pakete und Verzeichnisse.

ActionScript 3 bietet auch klassenbasierte objektorientierte Funktionen (wie Klassen im Java-Sinne, Vererbung und Schnittstellen) und statische Typisierung. Diese Ergänzungen zu dem, was die meisten von uns in JavaScript gewohnt sind, erleichtern das Lernen und Verwenden von ActionScript. (ActionScript stellt weiterhin dynamische Typisierung und prototypbasierte Vererbung für Situationen zur Verfügung, in denen Sie die Funktionen von herkömmlichem JavaScript wünschen oder benötigen.)

Die Fähigkeit von Flex, mit einem Java EE-Back-End über HTTP- oder SOAP-basierte Webdienste zu kommunizieren, ist äußerst nützlich, aber Sie sind nicht auf diese Kommunikationsansätze beschränkt. Blaze DS - ein separates Open Source-Produkt von Adobe - bietet Ihnen noch mehr Flexibilität bei der Kommunikation zwischen einem Flex-Frontend und einem Java EE-Backend. Mit BlazeDS können Sie JMS für die Kommunikation verwenden und Objekt-Remoting mit Java verwenden. BlazeDS bietet außerdem potenzielle Leistungsvorteile, da es das binäre AMF3-Format für eine schnellere Kommunikation verwendet, als dies normalerweise bei XML der Fall ist.

Ein Open Source-Produkt von Drittanbietern namens GraniteDS bietet noch mehr Auswahlmöglichkeiten für die Anwendung eines Flex-basierten Frontends auf eine Java EE-Anwendung. GraniteDS bietet Unterstützung für das AMF3-Binärformat sowie einige Funktionen, die mit BlazeDS nicht verfügbar sind. GraniteDS bietet beispielsweise Tools und Service-Frameworks für die einfachere Integration von Flex in Back-Ends, die auf EJB 3, Spring Framework, Guice oder Seam basieren.

Bei der bisherigen Diskussion über Flex habe ich wiederholt die Wörter einfach und leicht verwendet . Aber nimm nicht einfach mein Wort dafür. Der beste Weg, um zu verstehen, wie einfach und unkompliziert Flex-Grundlagen sind, besteht darin, sie selbst auszuprobieren. In den nächsten Abschnitten implementieren Sie eine Beispielanwendung, überarbeiten sie, um Funktionen hinzuzufügen und den Boilerplate-Code zu reduzieren, und stellen dann die Kommunikation zwischen Ihrem neuen, Flex-basierten Client und einem Java-Servlet her.

Flex erwerben und installieren

In den Beispielen dieses Artikels wird das Flex 3.2 SDK verwendet. Wenn Sie die Beispiele erstellen und ausführen möchten, laden Sie das Flex SDK herunter (einschließlich Befehlszeilen-Compiler und Debugger). Eine einzelne ZIP-Datei enthält das Flex SDK für mehrere Plattformen.

Entpacken Sie die Datei an einen offensichtlichen Ort, z C:\flex_sdk_3_2. Fügen Sie der Einfachheit halber den Speicherort des Flex SDK- binVerzeichnisses in den Pfad ein, damit die Befehlszeilentools von jedem Verzeichnis aus ausgeführt werden können. Ich mag eine erstellen FLEX_HOMEUmgebungsvariable , die Punkte an der Flex SDK Standort und fügen Sie dann $FLEX_HOME/binoder %FLEX_HOME%\binan die PATH. Sie können eine korrekte Installation von Flex überprüfen, indem Sie den Befehl ausführen mxmlc -version(siehe Abbildung 1).

Obwohl das Erstellen und Ausführen der Beispiele nicht erforderlich ist, möchten Sie möglicherweise FlexBuilder 3 herunterladen, das für einen Testzeitraum kostenlos verfügbar ist. Mit FlexBuilder können Sie einen beliebigen Texteditor (wie JEdit oder vim) oder eine Java-IDE (wie NetBeans oder Eclipse) zum Schreiben und Verwalten von MXML- und ActionScript-Dateien verwenden. Aptana Studio und Spket IDE bieten spezielle Unterstützung für die Bearbeitung von Flex-bezogenen Dateien.

MXML: Flex-Layout mit XML

Flex verwendet MXML zum Definieren des Layouts einer Flex-Anwendung. Flex-Layoutdateien werden normalerweise mit einer .mxmlErweiterung benannt. MXML-Code muss wohlgeformtes XML sein und XML-Namespaces verwenden. Das Beispiel in Listing 1 zeigt eine einfache, aber vollständig funktionsfähige Flex-Anwendung, die vollständig mit MXML geschrieben wurde und eine Liste ausgewählter JavaWorld-Artikel anzeigt.

Listing 1. Statisches MXML-Beispiel

Da dieses Beispiel statisch ist, zeigt es nicht viele Vorteile von Flex und Flash. Es dient jedoch als gute Einführung in MXML.

Der gesamte Code in Listing 1 ist wohlgeformtes XML. Die meisten XML-Zeilen in Listing 1 beziehen sich auf dieselben Codezeilen (Wiederholung von GridRowElementen mit verschachtelten GridItemund LabelElementen). Sie werden verwendet, um ein statisches Anzeigeraster mit der GridKomponente und ihren GridRowund GridItemUnterelementen zu definieren . Die Verwendung von , und organisieren und Darstellung von Daten in einer Weise ähnlich wie HTML Tabellenelemente

, , und
werden häufig verwendet.

Dieses erste MXML-Beispiel zeigt auch das in allen MXML-Anwendungen verwendete Root-Tag. Dieses Tag enthält eine explizite Breite und Höhe für die Flex-Anwendung. Das mxPräfix ist dem Flex-XML-Namespace als Teil dieses Stammelements zugeordnet.

Sie verwenden den Flex-Befehlszeilen-Compiler, mxmlcum die Beispiele dieses Artikels zu kompilieren. Die in der flex-config.xmlDatei definierten Flex-Standardeinstellungen sind für die Anforderungen der Beispiele ausreichend und mxmlcerleichtern das Kompilieren . Angenommen, die erste MXML-Liste wird in einer Datei mit dem Namen gespeichert Example1.mxml, kompilieren Sie sie mit dem folgenden Befehl:

mxmlc Example1.mxml

In Übereinstimmung mit den Standardeinstellungen wird diese MXML-Datei in eine SWF-Datei mit dem Namen kompiliert Example1.swf, die sich im selben Verzeichnis befindet wie die MXML-Datei, aus der sie generiert wurde. Sie können die SWF-Datei ausführen, indem Sie sie in einem Webbrowser öffnen oder einfach den gesamten Dateinamen in die Befehlszeile eingeben. Die gerenderte SWF-Datei sieht ungefähr so ​​aus wie in Abbildung 2.