This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information

Technologie unabhängige User Interfaces mit JVx

Mit JVx können Technologie unabhängige User Interfaces erstellt werden. Die Implementierung für Swing ist bereits umgesetzt und in der Bibliothek enthalten. Die Implementierung für QT Jambi ist nahezu fertig und steht bereits in den Startlöchern.

Die folgenden Screenshots zeigen die Kontakte Maske aus der Showcase Anwendung. Die Anwendung wurde einmalig mit JVx in Java implementiert und wird ohne Code Änderung als Swing Applikation und als QT Applikation gestartet:

Swing UI Implementation

Swing UI Implementierung

QT UI Implementierung

QT UI Implementierung

 

Der Unterschied der beiden Technologien könnte größer nicht sein, ist in unserem Beispiel aber nur an Details zu erkennen:

  • Mit Swing ist maximal eine ToolBar pro Bereich (NORD, SÜD, WEST, OST) möglich.
    QT ermöglicht beliebig viele ToolBars.
  • Ein Swing Button hat breitere Margins als ein QT Button
  • Die Window Buttons von Internal Frames werden von QT detaillierter dargestellt
  • Die Tabellen reagieren beim Scrollen unterschiedlich

Durch die Swing Implementierung kann auf die Vielzahl an vorhandenen Swing Controls zurückgegriffen werden um die Applikation an spezielle Kundenwünsche anzupassen. Mit der QT Jambi Implementierung können QT Jambi Controls von anderen Anbietern eingebunden werden.

Tippspiel für die Fußball Weltmeisterschaft 2010

Wir haben angekündigt, unsere Tippspiel Applikation (Packung!) für die heurige Fußball WM einzusetzen... Und nun ist es so weit.

Das Produktiv System wurde bereits eingerichtet und läuft in einer Testphase. Nach den letzten Konfigurationsarbeiten werden wir das System freigeben und jedermann kann sich für die Teilnahme registrieren.

Ob und was es zu gewinnen gibt? Das wird in einem unserer nächsten Postings zu lesen sein.

iPhone Anwendungen mit jQTouch erstellen

Eine native iPhone Anwendung setzt nicht nur Objective-C Know How voraus sondern auch eine spezielle Entwicklungsumgebung sowie Mac OS. Doch nicht immer muss es eine native App sein. Wenn auf die Kamera und die Hardware Beschleunigung verzichtet werden kann, stehen sehr gute JavaScript APIs zur Verfügung.

Ein brandneues API steht mit jQTouch bereit.

Fundtruhe - APIs

Zum Wochenausklang einige interessante Links für mobile Anwendungen:

  • JSON Serializer

    Ein noch recht junges Projekt für die Objektserialisierung mit JSON.

  • JFXtras

    Im Rahmen des Projektes werden Erweiterungen für Java FX entwickelt. Unter anderem neue Komponenten und Effekte.

  • AiCharts (Kommerziell)

    Eine mächtige Bibliothek für die Erstellung von Charts unter Android.

Fundtruhe - Application Frameworks

Da wir bei SIB Visions nicht die einzigen sind, die ein Application Framework entwickeln, ist ein Blick auf die vorhandenen Lösungen ganz interessant. Hierbei handelt es sich nicht um eine Bewertung sondern vielmehr um eine Auflistung und persönlicher Eindrücke.

  • Eclipse Riena (Java, Open Source)

    Ein Framework aufbauend auf OSGi/Equinox um Multi Tier Applikationen zu erstellen. Aufgrund der starken Abhängigkeit zu Eclipse Projekten setzt der Einsatz dieses Frameworks sehr viel Know How voraus. Zwar gibt es einiges an Dokumentation, doch diese zeigt bei weitem nicht alle Details. Die Einarbeitung geht recht schnell doch bei den ersten Problemen kann man nur auf die Dokumentation oder die Community vertrauen. Um Anwendungen zu erstellen muss einerseits viel konfiguriert (XML) und andererseits muss an den richtigen Stellen der passende Code eingesetzt werden. Weiters müssen noch allerlei Bibliotheken eingesetzt werden um mit Datenbanken zu arbeiten. Bei umfangreichen Projekten sind Wartungs- und Einarbeitungsaufwand sehr hoch anzusetzen. Außerdem werden Projekte schnell sehr umfangreich, ohne bereits die notwendigen Funktionen umgesetzt zu haben.

  • EclipseScout (Java, Open Source)

    Ist unabhängig von Riena, und wird auch zum Erstellen von Multi Tier Applikationen verwendet. Entwickelt wird mit einem Eclipse Plugin. Ohne dieses Plugin ist es nur mit sehr viel Know How möglich eine Applikation zu erstellen. Ist allerdings ähnlich komplex als Riena zu sehen.

  • XDev (Java, Kommerziell und Open Source)

    Ein RAD Tool zum entwickeln von 2 Tier Java Applikationen mit JDBC Zugriff auf Datenbanken. Inkludiert eine eigene Skript Sprache für Actions. Bringt die Standard Swing Komponenten und einige spezielle Controls mit. Die "IDE" ist etwas gewöhnungsbedürftig. Der generierte Source Code ist nur schwer wartbar.

  • Habanero (.NET, Open Source)

    Ist zwar Open Source, doch an Informationen gelangt man nur nach einer Registrierung. Einsetzbar für die Erstellung von klassischen 2 Tier Applikationen. Die Datenbank wird mit XML Mapping "nachgebildet". Die Controls sind eher schlicht und Tabellen editiert man mit Formular Popups.

  • eXpressApp Framework (.NET, Kommerziell)

    Bei DevExpress handelt es sich sowohl um einen Komponenten als auch um einen App Framework Entwickler. Das Framework wirkt sehr umfangreich und bietet sehr viel Funktionalität. Ein klassisches .NET Produkt.

  • MX-Frame (.NET, Kommerziell)

    Das Komplettpaket trumpft mit vielen GUI Komponenten auf und bietet auch einiges an Funktionen. Leider benötigt man ein Client, Developer und Server Produkt. Anhand der Dokumentation und den Informationen des Herstellers scheint der Komplexitätsgrad sehr hoch und die Einarbeitungszeit dementsprechend.

  • QAFE (Java/GWT/XML, Kommerziell)

    Dieses Framework tanzt etwas aus der Reihe, ist aber interessant weil damit lt. Hersteller die Konvertierung von Oracle Forms Applikationen zu Multi Tier Anwendungen möglich sein soll. Leider finden sich nur wenige Informationen und auch die Demos zeigen nur einen groben Überblick. Die Möglichkeit große Forms Applikationen zu konvertieren wäre interessant, da dies ein absolut mögliches Einsatzgebiet für JVx ist.

Im Gegensatz zu den anderen Open Source Lösungen ist JVx ein sehr schlankes Framework und kann auch ohne IDE Plugins entwickelt werden. In JVx ist bereits alles integriert um Datenbank Anwendungen zu erstellen, ohne auf weitere Bibliotheken angewiesen zu sein. Weiters können Unit Tests ohne Umwege erstellt und angewandt werden. Und es wird auch kein eigener Development Modus benötigt um zu entwickeln. Aufgrund der engen Bindung zur Datenbank fallen auch Konfigurationen wesentlich einfacher bzw. überhaupt weg. Das macht sich auch bei der Wartung bemerkbar.

JVx und das Tippspiel Packung

Im Java Magazin 05.2010 ist nun unser Bericht über das Fußball Tippspiel "Packung!" enthalten.

Nach einer ausführlichen Erklärung der Architektur und einigen Anwendungsfällen von JVx, wird anhand einer konkreten Tippspiel Maske erklärt, wie mit JVx gearbeitet wird um effizient und schnell zum Ergebnis zu kommen.

Abschließend ist auch noch unsere Android Anwendung zu sehen, die ebenfalls mit JVx umgesetzt wurde.

Der Artikel zum Nachlesen: JVx Java Magazin 05.2010

JVx 0.8 Beta 1

Seit heute steht die Beta 1 von JVx 0.8 bereit. Die Versionsnummer deutet auf eher geringe Änderungen zum Vorgänger hin. Doch der Schein trügt. Wir haben extrem hohe Ansprüche in die Release 1.0 und erst wenn alle in unserem Team zustimmen, wird der Schritt gewagt. Auf dem Weg zu 1.0 warten also noch spannende und Feature geladene Versionen.

Was ist nun alles neu und warum lohnt sich der Umstieg?

Neben kleineren und notwendigen Bugfixes lag das Hauptaugenmerk auf

  • Datenbankfeatures
  • Technologie Unabhängige Kommunikation (C#, MONO)
  • Erweiterungen im Bereich des Handling von Business Objekten
  • Minimierung der Requests
  • Code reviews

Wie bereits in einem meiner letzten Beiträge angedeutet, ist es mit JVx nun möglich die Business Logik für .NET/C# bzw. MONO Anwendungen anzubieten. Doch nicht nur die Business Logik an sich sondern im speziellen der Zugriff auf Datenbanken wird auf einfachste Art und weise ermöglicht. Sowohl mit Java als auch mit C# wird wie gewohnt gearbeitet. Die übliche IDE, die gewohnten Frameworks, die bekannten UI Komponenten. Vor allem mit Silverlight ist die Anbindung an JVx ein enormer Gewinn.

Zu den interessanten Datenbankfeatures zählen sicherlich die automatische Übernahme der Default Werte von Spalten und die Berücksichtigung von Check Constraints.
Die Default Werte werden wirksam wenn am Client ein neuer Datensatz erstellt wird. Dann werden die Default Werte vollautomatisch vorbelegt und die Eingabe wird für den Anwender um einiges einfacher und vor allem passieren weniger Fehler.
Die Check Constraints verwandeln einzelne Spalten automatisch in Choice Editoren, sprich der Anwender kann nur die erlaubten Werte eingeben. Im Falle von Ja/Nein Feldern müsste ansonsten immer und immer wieder ein J/N Choice Cell Editor definiert werden. Das erledigt nun JVx. Die einzige Bedingung ist ein sauberes Datenmodell.

Aber unabhängig von der Datenbank, stehen alle diese Features auch als API Funktionen zur Verfügung. Die Default Werte und die erlaubten Eingabewerte sind über Funktionen setzbar und können einfach in der Middleware festgelegt werden. Denn nicht jeder Java Entwickler ist zugleich ein Datenbank Spezialist.

Das wertvollste neue Feature ist aber unangefochten die Performancesteigerung bei der Übertragung der Meta Daten zwischen RemoteDataBook und DBStorage. Die Meta Daten werden nun Standardmässig pro RemoteDataSource gecached (im Normalfall existiert eine RemoteDataSource pro WorkScreen). Sollte ein WorkScreen z.B. 10 RemoteDataBooks enthalten, so wurden bisher 10 einzelne Requests benötigt. Nun reduzieren sich die Requests auf einen einzigen! Doch selbst dieser Request ist im produktiven Betrieb nicht nötig, da die Meta Daten im Normalfall nicht mehr geändert werden.
Aus diesem Grund wurde eine Cache Role eingeführt, die Wahlweise auf Global, DataSource oder Off gesetzt werden kann. Im Entwicklungsstadium verzichtet man auch gerne auf Caching.

Im Bereich der Business Logik wurde die Abhängigkeit zu GenericBean gelockert. Nun ist ein Lifecycle Objekt vom Typ Map ausreichend um die Server Objekte zu verwalten. Natürlich erhält man nur mit GenericBean den vollen Komfort, aber bei der Integration der JVx Lifecycle Objekte in z.B JSF oder Spring, verzichtet man schon mal auf diesen Komfort.

JSF, Spring und JVx? Mit der Beta 1 von JVx 0.8 wird die Integration möglich.

Eine genaue Übersicht der Änderungen finden sie in unserem Support System und der Roadmap zu JVx 0.8.

Fundtruhe

Schon länger im Gespräch, nun ist es da. Ein Java API für Amazon's Could: AWS SDK for Java

Weiters gibt es die Berkley DB ab 11g R2, von Oracle, nun auch für Android und die DB bietet zusätzlich ein neues SQL API, basierend nun auf SQLite 3.

Fundtruhe - iPhone

Eine Anwendung für das iPhone zu erstellen ist zwar keine Hexerei, allerdings benötigt man das richtige Know How dafür. Falls man das nötige Wissen (noch) nicht hat, dann ist folgende Seite zu empfehlen: Appstorm

.NET und MONO kommunizieren mit JVx

Schon seit wir mit der Definition des ISerializer Interface begonnen haben, war der Wunsch nach Technologie unabhängiger Kommunikation vorhanden. Das Thema hat uns immer wieder gestreift, doch die Notwendigkeit einer Java unabhängigen Implementierung war nicht gegeben.

Vor einigen Wochen war es dann so weit. Wir entschieden uns für die Portierung der JVx Objekt Serialisierung nach C#. Natürlich gab es einige Herausforderungen und Probleme, die jedoch keinen Einfluß auf die Funktionswiese hatten. Und im Unterschied zu CORBA, Hessian & Co unterstützen wir ein sehr breites Spektrum an Objekten.

Nun ist endlich so weit und wir können eine funktionierende Kommunikation zwischen JVx und C# vermelden. Sämtliche Objekte werden mit dem UniversalSerializer ausgetauscht. Der C# Serializer arbeitet wie sein Java pendant und ist ebenso mächtig. Die Serialisierung von Objekten unterliegt allerdings den gleichen Einschränkungen wie es auch in Java der Fall ist, allerdings verzichten wir bei unserer Lösung auf das im Normalfall verpflichtende ISerializable Interface.

Um dem ganzen den notwendigen Schliff zu verpassen haben wir auch gleich die Kommunikationsklassen AbstractSerializedConnection, Master- und SubConnection sowie alle abhänigen Klassen portiert. Dadurch ist der Zugriff auf die JVx Business Logik zu 100% gegeben. Wir können nun die komplette Business Logik und alle Server seitigen Actions, auch mit C#, einsetzen und zwar ohne Mehraufwand.

Ein kleines C# Beispiel an dieser Stelle muss natürlich sein:

public void testMetaData()
{
    HttpConnection conDemo = new HttpConnection(new UniversalSerializer(),
                                                "http://localhost/jvx/services/Server")

    MasterConnection appconDemo = new MasterConnection(conDemo);

    appconDemo.ApplicationName = "demo";
    appconDemo.UserName = "demo";
    appconDemo.Password = "demo";
    appconDemo.open();
       
    SubConnection sub = appconDemo.createSubConnection("demo.Company");
    sub.open();
       
    MetaData md = (MetaData)sub.call("company", "getMetaData");
}

Im nächsten Schritt erstellen wir einen Showcase basierend auf Silverlight 4. Demnächst hier mehr dazu.