Wie bereits in einem früherem Posting berichtet wurde, haben wir im Rahmen der WJAX Challenge 2009 ein Fußball Tippspiel entwickelt. Und genau dieses Tippspiel setzen wir nun für die Fußball Weltmeisterschaft 2010 ein.
Seit heute steht die offizielle Version für jeden Fußball Fan zur Verfügung und wir laden recht herzlich zur Teilnahme ein.
Das Tippspiel wurde vollständig mit dem Enterprise Application Framework - JVx - entwickelt und der Source Code steht unter Apache Lizenz 2.0 zum Download bereit.
Aber was wäre ein Tippspiel ohne Preise?
Natürlich nur halb so interessant. Deswegen gibt es auch passend zu den Themen JVx, Java und Fußball etwas zu ergattern. Auch an dieser Stelle ein Dankeschön an unsere Sponsoren.
Genauere Informationen sind auf unserer Fußball WM-2010 Webseite zu finden.
Die in JVx integrierte Kommunikation hätte durchaus potential für ein eigenständiges Open Source Projekt. Wir sind jedoch bemüht die Entwicklung immer so einfach als möglich zu halten. Das bedeutet nicht, daß in JVx alle möglichen Frameworks zusammengeführt werden und somit ein nicht überschaubares "etwas" entsteht, sondern JVx enthält alles was nötig ist um Business Anwendungen in einer 3 Schichten Architektur zu erstellen. Und dazu gehört nun mal eine effiziente Client/Server Kommunikation.
Es gibt natürlich Frameworks für die Kommunikation zwischen Client und Server, wie z.B. Netty. Doch unabhängig von den vielen Möglichkeiten des Frameworks ist die Bibliothek mit knapp 700KB ein großer Brocken (nur für die Kommunikation!). Weiters ist ein Kommunikationsframework alleine noch nicht ausreichend, denn die Objekte müssen zwischen Client und Server auch noch serialisiert bzw. deserialisiert werden.
Für die Serialisierung könnten wiederum vorhandene Frameworks wie z.B.: Google Protocol Buffers oder Hessian eingesetzt werden. Doch die Google Protocol Buffers erfordern die Definition der zu übertragenden Objekte und ist daher für ein generisches Framework wie JVx nicht geeignet. Und Hessian unterstützt leider nicht alle Objekttypen und ist nicht out-of-the-box mit z.B. Android einsatzfähig.
Der in JVx integrierte Kommunikationsmechanismus erlaubt ohne weiteres die Integration von den bisher genannten Frameworks, da weder das Transportprotokoll noch die Serialisierung ausschlaggebend sind für eine Business Anwendung. Außerdem definiert JVx mit Interfaces, was die Kommunikation bieten muss. Üblicherweise ist eine eigene Implementierung durch die Ableitung von AbstractSerializedConnection bzw. die Implementierung von ISerializer rasch durchgeführt.
Mit dem UniversalSerializer wird außerdem eine Lösung bereitgestellt mit der Objekte, zwischen unterschiedlichsten Technologien, ausgetauscht werden können. Und das ohne sich Gedanken über die Konfiguration zu machen bzw. Mappings zu erstellen. Der Einsatz des UniversalSerializer in Verbindung mit Netty ist ebenfalls ohne Probleme möglich, nur um hier auf den flexiblen Einsatz der JVx Kommunikation hinzuweisen!
Die Kommunikation wird im Moment mit Java und .NET erfolgreich eingesetzt. Weiters funktioniert die Kommunikation auch ohne jegliche Anpassung mit Android.
Die Java User Group Austria, kurz JUGAT, ist am 20.05.2010 zu Gast bei SIB Visions.
Wir halten einen Vortrag über die Entwicklung von Business Applikationen mit JVx und zeigen Live wie eine professionelle Datenbank Applikation, ohne doppelten Boden, mit Eclipse und dem Enterprise Application Framework - JVx, in kürzester Zeit erstellt werden kann.
Ein weiterer Programmpunkt ist ein Vortrag über (J)Ruby und die Erstellung von PDF Dokumenten aus HTML Vorlagen mit Ruby Skript.
Seit gestern sind unsere Demo Anwendungen in der Cloud beheimatet. Unser bisheriges Demo System war nicht unbedingt für eine Vielzahl von Usern ausgelegt. Außerdem dachten wir ursprünglich, daß ein Demo System nicht so performant sein muss wie ein produktives System. Doch dieser Gedanke passt so überhaupt nicht zu JVx. Denn JVx unterscheidet sich von anderen vergleichbaren Frameworks unter anderem durch die Performance.
Damit JVx seine Vorteile voll ausspielen kann, war ein Umzug unbedingt erforderlich.
Das neue System ist in seiner Basis Konfiguration bereits für mehrere Hundert User ausgelegt und kann bei Bedarf beliebig skaliert werden. Das ist nur einer der vielen Vorteile einer Cloud.
Aufgrund des Umzuges wurden beim Tippspiel Packung nur die Benutzerkonten übernommen, nicht aber die Tipps, die erfassten Ergebnisse bzw. die manuell erstellten Turniere. Da es sich um eine Demo Anwendung handelt haben wir auf eine vollständige Datenübernahme verzichtet.
Weiters wird nun für die Showcase Anwendung die aktuellste JVx Version eingesetzt. Das bedeutet unter anderem ein verbessertes Meta Daten Caching und den Einsatz des Universal Serializer.
Unsere .NET bzw. MONO Anbindungen an JVx befindet sich bereits auf der Zielgeraden. Und frei nach dem Motto "ein Bild sagt mehr als tausend Worte" präsentieren wir Ihnen die ersten Screenshots von unserem Silverlight Showcase.
Die Anwendung befindet sich zwar noch in der Entwicklung, sowohl am Design als auch Funktional wird sich noch das eine oder andere Detail ändern, aber sehen Sie selbst:
 Silverlight Login |
|
Die Anmeldung
Die Anmeldung an die Applikation erfolgt durch die Eingabe von Benutzername und Passwort. Selbstverständlich können die gleichen Benutzerdaten wie auch in der Java Applikation verwendet werden.
Der Silverlight Client unterscheidet sich zwar optisch vom Java Client, doch die Business Logik wird ohne Souce Code oder Konfigurations- Anpassungen wiederverwendet.
Ein wesentliches Ziel bei der Entwicklung ist, die Vorteile der jeweiligen Technologie ideal zu nutzen! |
|
Die Kontaktverwaltung
Das Foto kann bequem per Drag and Drop vom Desktop in die Anwendung gezogen werden. Und weiters ermöglichen wir die Adress Auswahl über das Map Control (siehe nachfolgenden Screenshot).
Ein nicht gleich auf den ersten Blick ersichtlicher Knüller ist das Data Binding. Die Daten werden nämlich nicht via Webservice oder JSON geladen, sondern direkt von der JVx Business Logik. Und für sämtliche CRUD Anweisungen werden die selben Server Objekte verwendet wie auch für den Java Client. |
|
 Silverlight Contacts |
|
 Silverlight Map |
|
Die Adressauswahl
Eine Adresse einzugeben ist nur halb so viel Spaß wie die Adresse auf einer Karte zu suchen. Aus diesem Grunde haben wir das komfortable Map Control integriert.
Da macht das ganze doch gleich viel mehr Spaß! |
|
Den Silverlight Showcase werden wir demnächst veröffentlichen. Bleiben Sie also am laufenden!
Bei der Umsetzung unserer WebUI stoßen wir immer wieder auf interessante Tools und Frameworks. Zwei davon sind aufgrund des Ansatzes sehr interessant:
- OpenSAGA
Die Ziele des Frameworks sind sehr verwandt mit denen von JVx: geringer Einarbeitungsaufwand, Technologieabstraktion, Standardplattform.
- OpenWGA
Unter der Haube steckt ein Framework zur Erstellung von Web Applikationen. Damit erstellt wurde ein CMS. Der Ansatz wirkt sehr frisch, allerdings gibt es eine spezielle IDE, eine spezielle Script Sprache usw. Man muss sich also aufwändig einarbeiten und ist dann recht schnell abhängig.
Wie bereits erwähnt können mit JVx, Technologie unabhängige User Interfaces erstellt werden. Der Desktop Bereich ist mit Swing und QT im Moment gut abgedeckt. Doch wie sieht es mit einer Implementierung für HTML/Ajax aus?
Wäre doch großartig, wenn eine Applikation nicht nur als RIA (Desktop, Applet) verwendet werden kann sondern auch als klassische Web Anwendung. Die Installation von Plugins wäre dadurch nicht mehr notwendig.
Unsere Entwicklungsabteilung arbeitet gerade mit Hochdruck an der WebUI Implementierung für JVx. Dabei setzen wir vor allem auf GWT und die Komponenten Bibliothek extGWT.
Die Implementierung wird ebenfalls unter der Apache License, Version 2.0, veröffentlicht. Die ersten Screenshots werden wir in einem unserer nächsten Postings veröffentlichen.
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 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.
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.
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.