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

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.

Fundtruhe - Pivot

Jeder Java Anwendungsentwickler, hat früher oder später mit Swing zu tun. Einer mag es aufgrund der beworbenen Fähigkeiten, der andere nimmt Abstand von einem in die Jahre gekommenen Baukasten. Die Swing Zahnräder drehen sich schon lange nicht mehr weiter und die Konkurrenz ist schon längst auf der Überholspur. Aber wer nicht auf SWT bzw. Eclipse RCP setzen möchte, bekommt von Apache eine neue Perspektive: Pivot.

Ein modernes RIA Toolkit mit sehr ansprechenden Komponenten und neuen Möglichkeiten.

Das Toolkit ist zwar nicht gerade schlank, aber im Vergleich zur Konkurrenz: Respekt.

Pivot hat auch gleich eine eigene Definitionssprache, WTKX, an Board.

Und zu unserer Freude lässt sich Pivot als UI Implementierung von JVx nutzen. Dahingehend ist zwar noch einiges an Entwicklungsarbeit zu leisten, aber die Richtung stimmt.

JVx

Die Entwicklungen an JVx 0.8 laufen bereits auf Hochtouren. Die erste Beta Version ist für Anfang April geplant.

Der Schwerpunkt liegt in den Bereichen

  • Usability
  • Vereinfachung und Komfort bei der Verwendung des API
  • Kommunikation mit C# bzw. MONO
  • Bugfixes

In der Roadmap ist der aktuelle Stand der Entwicklung ersichtlich.

Fundtruhe

Am heutigen Tag gibt es einige Links die auch für JVx interessant sein könnten. Das wären

  • MonoTouch (kostenpflichtig)

    Die Kommunikation zwischen .NET/C# und JVx funktioniert bereits problemlos. Auch mit MONO lässt sich der C# Code ohne Probleme compilieren und einsetzen. Somit gibt es sowohl für Windows als auch Linux eine Möglichkeit mit JVx zu kommunizieren und das ganz ohne Java.

    Für mobile Devices existiert im Moment nur eine Android Lösung, da diese Plattform auch auf Java setzt und JVx out-of-the-box auf dieser Plattform läuft.

    Mit MonoTouch ist unter umständen eine Ausdehnung auf das iPhone vorhanden. Doch dazu müssen wir etwas tiefer in MonoTouch eintauchen.

  • Appcelerator

    Eine interessante Entwicklung um Applikationen für mobile Devices zu erstellen. Durch die Möglichkeit beliebige Bibliotheken zu integrieren besteht vielleicht ein Integrationsmöglichkeit von JVx, allerdings ist Java keine Basis Technologie.

Und zusätzlich gibt zwei interessante Projekte im Bereich der Applikationsentwicklung:

  • UFaceKit - Tom Schindl Blog

    In dem Blog berichtet Tom Schindl über seine Erfahrungen bei der Entwicklung von UFaceKit und seiner QxWT Implementierung.

  • Scout

    Die Scout-Entwicklungsplattform ist die Basis aller BSI-Produkte. Sie besteht aus einem Application Model, einer Referenz-Implementation, einem SDK und einer Reihe Entwicklungs-Tools. Wird eingesetzt für die Entwicklung von SOA- und J2EE-kompatible Geschäftsanwendungen. Basiert auf Eclipse RCP und macht starken gebrauch von vorhandenen Frameworks.

    Weitere Links:

Fundtruhe - EntityFS

Wenn man mit java.io.File nicht arbeiten möchte und einen komfortablen Weg für den Umgang mit Dateien sucht, dann ist ev. das EntityFS API ganz nützlich.

Zusammengefasst stellt es Klassen und Utility Methoden bereit um Dateien zu lesen/ändern/kopieren. Das API besteht aus relativ vielen teilweise untereinander abhänigen jars. Die core lib ist mit etwas über 360Kb auch nicht gerade schlank. Die komplette lib veranschlagt sogar etwas über 700Kb.

Dennoch spart das API sehr viel Zeit im direkten Vergleich mit java.io.File & Co.

Der erste Auftritt von JVx in den Medien

In der Ausgabe 04.2010 des Java Magazin ist ein äußerst interessanter Artikel, von Florian Müller, über JVx erschienen. Dieser Artikel gibt einen kurzen Einblick in JVx, erläutert kurzerhand die Idee hinter JVx und zeigt ein kurzes Code Beispiel. Alles in allem, ein gelungener Einstieg von JVx in die Medienwelt.

Der Artikel zum Nachlesen: JVx Java Magazin 04.2010

Die kommende Ausgabe 05.2010 enthält einen Beitrag von mir, über die Umsetzung unseres Beitrages zur W-JAX Challenge 09. In dem Artikel erkläre ich was es mit JVx auf sich hat und anhand eines Beispiels versuche ich die Einfachheit und Effizienz zu verdeutlichen.

Der Artikel ist schon seit einigen Wochen bei IT-Republik zu finden: Hier