JVx
# JVx

Das JVx ist ein quelloffenes Webframework für die Java-Plattform. Es ermöglicht die Entwicklung von professionellen und effizienten Datenbankanwendungen, in kürzester Zeit und mit wenig Quellcode.

Die Architektur des Frameworks folgt dabei dem Prinzip des Schichtenmodells für die Erstellung von Softwaresystemen. Aufbauend auf einer Drei-Schichtenarchitektur und der Befolgung des Dependency Inversion Principle entstehen mit JVx einfach wartbare Anwendungen. Das Framework bietet eine vollständige Unterstützung aller Schichten.

* Als Datenhaltungsschicht können eine Datenbank, aber auch Alternativen wie z. B. das Dateisystem verwendet werden.
* Die Logikschicht wird über einen integrierten Kommunikationsserver angeboten. Dieser Server unterstützt die Verwaltung von Sessions und der Anwendungslogik
* Die Präsentationsschicht ist technologieunabhängig und kann mit unterschiedlichen Technologien wie z. B. Swing (Java), SWT, Vaadin, uvm. verwendet werden.

## Ziel

Mit JVx sollen Entwickler mehr Zeit für die Lösung von anwendungsspezifischen Anforderungen haben. Die technologischen Hürden übernimmt das Framework. Außerdem sollen einfache Aufgaben wie z. B. die Erstellung von Stammdaten- und Bearbeitungsmasken weniger Zeit als üblich in Anspruch nehmen. Der gesamte Entwicklungsaufwand soll reduziert werden, indem JVx Lösungen für häufig wiederkehrende Aufgaben anbietet.

## Funktionalität

Zu den Eigenschaften von JVx zählen unter anderem:

* Vollautomatische Auswahllisten aufgrund des Datenbankmodells
* Generisches und technologieunabhängiges User Interface
* Ein einheitliches aktives Model für Steuerelemente
* Daten und Datenbankunabhängigkeit
* Daten werden von allen Controls erst dann geladen, wenn darauf zugegriffen wird (Lazy loading)
* Serverseitige Session- und Objekt-Verwaltung
* Internationalisierung auf Komponentenebene
* Vollständige Applikationsrahmen
* synchrone und asynchrone Kommunikation
* Kommunikation mit Client- und Server Actions
* Up- und Download von Daten/Dateien
* Integrierte Bildverwaltung

## Implementierungen

Für die Präsentationsschicht (Client) existieren mit JVx bereits Implementierungen für

* Swing (Java) (Applikation, Applet oder beides als Webstart – JNLP)
* JavaFX
* Headless
* Vaadin
* react
* Flutter (nativ)

## Erweiterungen

Für JVx existieren Erweiterungen die beim Einsatz in Enterprise Anwendungen für hohen Komfort sorgen. Dazu zählen:

* Vaadin basierende Online-Hilfe
* JVxEE für den Einsatz mit JPA und Jakarta EE
* AddOns für den Einsatz mit Android
* Anbindung von JVx für den Einsatz mit Vert.x
