JUVE - ein Applikationsframework für alle Anwendungsgebiete

Zweck


JUVE ist ein Applikationsframework, welches für eine flexible und schnelle Entwicklung von performanten und hochskalierbaren Multi-Tier-Applikationen gedacht ist. Der Ursprung von JUVE liegt im JAVA-Umfeld, aber die Implementierung von JUVE enthält keine JAVA-spezifischen Elemente und es gibt bereits Implementierungen von JUVE in anderen Programmiersprachen. Die schnelle Entwicklung von ständig neuen Architekturen wie EJB werfen die Fragen auf, ob eine auf einem Architekturkonzept basierende Applikationsentwicklung eine verläßliche Investition in die Zukunft darstellt. Auf dem Markt erscheinen jetzt XML-basierenden Applikation Server Lösungen, die praktischen Probleme mit der Performance und Skalierbarkeit von EJB-Applikationen sind an der Tagesordnung in so vielen Projekten. JAVA als höhere Programmiersprache mit dem interpretierbaren Code erfordert kompromißvolle Implementierung und sehr effiziente Gestaltung der Applikationsarchitekturen.

JUVE als Applikationsframework und Architektur liefert eine einfache und solide Lösung für ein breites Spektrum von Applikationen: von einfachen, Single-Tier-Applikationen bis hin zu den Multi-Tier-Applikationen mit hoher Transaktionslast. JUVE ist ursprunglich implementiert in JAVA, aber es ist stark portabel, verwendet keine JAVA-Besonderheiten. JUVE stellt in den Vordergrund und fordert die konsequente Anwendung von objektorientierten Methoden in dem Entwicklungsprozeß.

Technologie


JUVE als Architekturkonzept ist implementiert in JAVA, C#/.NET, C++, Delphi. JUVE ist objektorientiert und definiert einige Basisklassen, welche in der Applikationsentwicklung spezialisiert werden.

JUVE basiert auf dem Schichtenarchitekturmodell und fördert dessen konsequente Verwendung in der Applikationsanwendung. Als die Hauptschicht der Anwendung fungiert eine Domänenschicht, die die Business Objekte der Geschäftsdomäne enthält. Die Domänenschicht kann symmetrisch auf dem Client und auf dem Server eingesetzt werden. Das Basisszenario ( Einlesen der Business Objekte aus der Datenbank, Übertragung zum Clientteil, Verarbeitung auf dem Client, Übertragung der Verarbeitungsergebnisse zum Server und Aktualisierung der Änderungen in der Datenbank ) erfordert, daß die Business Objekte ( als Einzelobjekte, Objektlisten, Objektbäume oder Objektgraphen ) zwischen dem Client und Server übertragen werden, mithilfe der JUVE-eigenen, optimierten Mechanismen der Objektserialisierung und -kommunikation. Dieses Konzept unterscheidet sich bewußt von den zumeist in den populären Applikationsframeworks verwendetem Proxy-Designpattern.

XML wird bei JUVE als Standardkommunikationsmittel verwendet.  Zwecks Optimierung für kritische Anwendungen wird auch eine besonders optimierte eigene Kommunikation angeboten. Durch Verwendung von XML kann beispielsweise ein JAVA-Server mit einem C++-Client direkt kommunizieren.

Der Kerncode von JUVE bietet Mechanismen für

  • Architekturdesign nach dem Schichtenmodell
  • praktikablen Verwendung von OOA/OOD im Entwicklungsprozeß, auch von Internet-fähigen Anwendungen
  • ObjektzustandverwaltungObjektserialisierung mit XML und optimiert
  • Implementatierung der SQL-Zugriffsschicht

Die Datenbankzugriffschicht wird bei JUVE komplett entwickelt durch den Anwendungsentwickler. JUVE liefert einige Grundklassen, die die Schnittstellen und Mechanismen definieren. Aber die Hauptarbeit muß von dem Anwendungsentwickler geleistet werden. Eine Verwendung von OO-RDBMS-Mapping-Tools ist möglich, wird aber nicht bevorzugt. Ein JUVE Code Generator vereinfacht etwas die Entwicklung, aber es bleibt nach wie vor noch viel zu tun. Warum so: wir gehen davon aus, daß die Datenbankzugriffsschicht ein wesentlicher und zentraler Punkt ist für die Gewährleistung einer hohen Performance des Systems und aus diesem Gründe ermöglichen wir die Verwendung von fast allen SQL-Optimierungsmechanismen. In der JUVE-Entwicklungsumgebung gibt es keine Blackbox, alles ist offen, der Entwickler kann mit dem Debugger direkt den Zugriffscode prüfen und nahezu beliebige Optimierungsmaßnahmen treffen.

Das Kommunikationskonzept von JUVE ist portabel: es gibt Implementierungen auf der Basis von TCP/IP-Sockets, RMI-Server, EJB-basierende Umgebung, und JUVE-eigenen hochskalierbaren Server. Dank der starken XML-Orientierung und einer WebServices/SOAP-basierenden Kommunikationsvariante, die Zukunft der JUVE-Applikationen ist sicher.

JUVE verzichtet bewußt auf die Verwendung von Metamodell-Ansätzen, der Code ist offen sowohl in dem Anwendungsteil als auch in dem Framework selbst. JUVE-Framework ist ziemlich einfach und durchschaubar. Ein durchschnittlicher Entwickler mit OO-Erfahrung kann sehr schnell eine Anwendungsentwicklung mithilfe von JUVE beherrschen.

Wichtigsten Bestandteile / Module

JUVE setzt sich aus mehreren Modulen zusammen, die zumeist unabhängig voneinander eingesetzt werden können:

  • JUVE XML

    JUVE XML ist ein Basisframework zur Realisierung von der hochperformanten Serialisierung von Objekten und ist Basis zur Realisierung der hochperformanten Datenkommunikation.

    JUVE XML in der Grundversion implementiert XML basierende Serialisierung. Darüberhinaus enthält JUVE XML weitere Serialisierungsvarianten wie Binärserialisierung, Unterstützung für die komprimierte und verschlüsselte Serialisierung, XML-Compare-Klassen, usw.

  • JUVE Basic

    JUVE Basic enthält Basisklassen zur Realisierung der Datenverarbeitung. Der wichtigste Klassenbaum beginnt mit der Klasse EntityState. EntityState definiert einen Zustandmechanismus, mit dem die Änderungen des Objekts und der Daten des Objekts festgehalten werden. In der Klasse BasicEntity wird der Grundstein gelegt für die Datenverabeitung und deren Speicherung in relationalen Datenbanken. Die Klasse StandardEntity erweitert seine Basisklassen um Standardattribute, die häufig in der Datenbank gebraucht werden.

    Die Klasse Term liefert Grundstein für die Verwendung von statischen Daten in der Anwendung ( Daten, die selten geändert werden und somit einfach im Cache festgehalten werden können ).

    Die Klasse DatedEntity ist Basisklasse für alle datumbezogenen Objekte. Die Klasse PeriodEntity stellt Basis dar für das Periodenhandling in der Anwendung.

    JUVE Basic enthält Basiccontainerklassen, die dem Anwendungsentwickler das Leben leichter machen, indem sie die Standardklassen um die am häufigsten benötigte Funktionalität im Kontext der Client/Server-Umgebung erweitern.

  • JUVE People

    JUVE People enthält die Definition und Implementierung der grundlegenden Strukturen zur Verwaltung der Personendaten, deren Adressen, Telefonnummern, EMail-Adressen usw.

    Die Klassen von JUVE People sind leicht erweiterbar. Auf dieser Basis können CRM/ERP/Buchhaltungslösungen und andere gebaut werden, ohne daß man sich mit den Grundlagen beschätfigen muß.

  • JUVE Appli

    JUVE Appli enthält Strukturen und Funktionalität, die notwendig ist zur Realisierung von komplexeren Anwendungen:

    - Userverwaltung, Definition der Kommandos, Permissions, Userrollen

    - Logmanagement, Prozessverwaltung, Application-Definition

    - Scheduler zur Taskverwaltung

  • JUVE Resource Management

    JUVE Resource Management Modul erlaubt das Management von Systemressourcen wie Datenbankverbindungen, Data Stores, File Stores, etc.

    Die Ressourcen werden je nach Charakter optimal verwaltet: die Datenbanksessions können basierend auf JDBC2 oder anderen Mechanismen gepoolt werden, die statischen Daten bzw. Dateien können im Cache gehalten werden und je nach Änderungsmodalitäten der Anwendung zur Verfügung gestellt werden.

    Mittels dieses Moduls kann sich die Anwendung auf optimale Art und Weise die Ressourcennutzung zentral und ressourcensparend verwalten.

  • JUVE Web Services

    JUVE Web Services ist eine Grundbibliothek zur Realisierung der Web Services basierenden Kommunikation nach dem SOA-Architekturprinzip. Dabei wird ein JUVE Web Service Provider Konzept zur Basis gelegt, mit dem eine Anwendung die Schnittstellen gruppieren kann und die Implementierung der Serverfunktionalität generisch mittels JUVE Basisklassen als Übergabeparameter definieren kann.

  • JUVE Client Framework

    JUVE Client Framework ist ein komplettes Framework zur Realisierung des Clientteils der Anwendung und Implementierung von GUI. Dabei wird ein modifiziertes MVC-Pattern (  MVC+ Architecture Pattern, siehe dazu MVC+ Architektur Pattern.pdf ) angewandt, in dem die Zusammenarbeit der Schichten View und Controller über abstrakte Schnittstellen nach dem Listener Pattern entkoppelt wird. Dadurch wird folgendes Ziel erreicht: die Controller-Schicht ist fast komplett wiederverwendbar, wenn beispielsweise eine neue GUI-Bibliothek mittels einer neuen View-Schicht eingesetzt werden soll. Unter Verwendung des JUVE Web Client Frameworks gilt es auch für die Implementierung eines HTML-Frontends für eine Anwendung !

    Als Modell-Schicht wird eine Domänenklassenschicht verwendet, die auf die anderen Teile des JUVE Frameworks sich stützt.

    JUVE Client Framework enthält neben einigen abstrakten Schnittstellen und Grundklassen auch einige ganz konkrete Klassen, die eine Implementierung in der jeweiligen GUI-Bibliothek erleichtern ( JAVA SWING, JAVA SWT, C# Forms etc. ).

  • JUVE Web Client Framework

    JUVE Web Client Framework ist eine Implementierung nach Muster des JUVE Client Frameworks zur Unterstützung des HTML-Frontends der Anwendung. Beim JUVE Web Client Framework gehen wir eigene Wege: kein JSP, kein ASP, etc.

    Die HTML-Generierung beim JUVE Web Client Framework stützt sich auf das Template-Filter-Pattern:

    - der HTML Designer entwickelt HTML-Seitenmuster, in denen er zur Kennzeichnung von Datenfelderinhalten Datentags verwendet ( zB. %%User%%Vorname%% )

    - HTML Filterklasse vom JUVE Web Client Framework während der Verarbeitung filtert die HTML-Seiten-Musterdatei ( verwaltet im Cache durch JUVE Resource Manager ) zeichenweise ( dabei wird 1 Zeichen maximal einmal verarbeitet ) und ersetzt "on the fly" die Datentags durch die konkreten Daten

    In den HTML-Musterdateien wird weder JAVA-Code noch irgendein Pseudocode verwendet, dadurch erzielt man folgenden Vorteil im Entwicklungsprozeß:

    - beim HTML-Design sind dem HTML-Design fast keine Grenzen gesetzt.

    - die Applikationsentwicklung ist vom HTML-Design weitgehend entkoppelt

    JUVE Web Client Framework garantiert eine sehr hohe Performance und Hardwareressourcennutzung.

Neue Möglichkeiten für die Entwicklung


JUVE vereinfacht die Anwendungsentwicklung, weil es liefert eine solide und klare Basis für sowohl komplexe Multi-Tier-Anwendungen als auch Standalone-Applikationen. JUVE wurde verwendet sowohl bei der Entwicklung von Softwareprodukten als auch in komplizierten Softwareprojekten. Dank dem klar definierten Entwicklungsprozeß mit JUVE und der hohen Performance der JUVE-Anwendungen, die Projektrisiken werden minimalisiert - obwohl eine kurze Entwicklungszeit durchaus möglich ist. Die Wiederverwendung von den Modellen, von dem Code wird stark gefördert. Die XML-Datenstrukturdefinitionen werden als Nebenprodukt der Entwicklung erzeugt und bilden eine gute Grundlage für kunftige Entwicklungen. Die Skalierbarkeit und die Performance aller Softwareschichten reduziert die Hardwarekosten.

Der Softwareentwicklungsprozeß mit JUVE basiert auf UML-Methode und entspricht in Grundzügen den Prinzipien der Model Driven Architecture.

Weitere Dokumente

Juve Architecture Framework ( Power Point Präsentation als PDF )

Juve SQL Layer Framework ( Power Point Präsentation als PDF )

MVC+ Architektur Pattern ( PDF )