Suche
W-JAX Blog

Java Desktop – Quo vadis?

Karsten Lentzsch

Karsten Lentzsch

Welche UI-Technologie für welchen Zweck? Diese Frage stellt sich Java-Entwicklern immer wieder – nicht erst seit der Einführung von JavaFX. Auf der W-JAX 2015 geht Karsten Lentzsch dem UI-Thema auf den Grund – und räumt im folgenden Beitrag mit einigen gängigen Vorurteilen auf!

Java Desktop – Quo vadis?

Was soll ich machen, wenn ich meine Geschäftsanwendungen in Swing oder SWT programmiert und dazu noch 5 bis 10 Jahre in mein unternehmenseigenes Rahmenwerk investiert habe? Wie kann ich diese Investitionen schützen? Wie kann ich meine Oberflächen in die Zukunft überführen? Wie kann ich meine Aufgaben heutzutage zeitgemäß gestalten und günstig programmieren? Lohnt noch ein Wechsel auf ein anderes Desktop-Toolkit – etwa JavaFX? Was nutzt und was kostet das? Welche Risiken erwarten mich? Oder soll ich besser warten, bis ich meine UIs ins Web bringe, dann aber auch gleich auf Tablets und Telefone? Und wie kann das mit meinem Java-Desktop-Team gehen?

Auf der W-JAX werde ich mit zwei Vorträgen diese Themen beleuchten, Kriterien und Entscheidungshilfen für diese Fragen geben und einige direkt beantworten. Zum einen zeige ich, wie man seine Oberflächen und das Wissen dahinter auf den Stand der Zeit bringen und weiter in die Zukunft überführen kann. Zum anderen, wie man die darunter liegende Technik vom aktuellen Toolkit lösen und auf neue Anforderungen, Toolkits und Geräte vorbereiten kann.

Seit ein paar Jahren helfe ich Teams, ihre Oberflächen zu renovieren hin zu zeitgemäßer Gestaltung, zu dem, was heute jeder Anwender aus guter Web-Gestaltung gewohnt ist und mehr und mehr einfordert. Dazu hab ich viele praktischen Tipps, die bezahlbar und für jeden machbar sind. Nun brenne ich aber vor Begeisterung für etwas Neues. Eigentlich wollte ich nur zeigen, wie einfach man Java-Desktop-UIs in den visuell sehr ruhigen Windows-10-Stil überführen kann. Dabei habe ich mich orientiert  an Microsofts Universal Windows Platform (UWP). Es war noch nie so einfach, die native Plattform nachzubauen. Und die Resultate sehen frisch und modern aus, sind wirklich zeitgemäß, konsistent und gelungen.

Vielleicht viel wichtiger ist aber die UWP-Dokumentation. In der Java-Desktop-Szene gelte ich einigen als GUI-Größe. Aber als ich die UWP studiert habe, dachte ich nur: „Huch, wie peinlich!“ Denn vieles war auch mir neu, was ich dort gelesen habe über Anwendungsszenarien, Navigationskonzepte und Inhaltsarten. Mir sind einige Lichter aufgegangen zu Fragen, die ich in der Vergangenheit nur über Vergleiche mit bekannten Anwendungen beantworten konnte. Nun aber gibt es endlich klare Entscheidungshilfen, wie man Navigation, Inhalte und Kommandos auswählt und strukturiert und wie man den Bildschirmfluss organisiert. Das passt auch noch für verschiedene Betriebssysteme und mehre Gerätearten: Desktop, Tablet, Telefon. Wir können die UWP-Doku nutzen als Java Desktop Blueprints. Wow! Genau das hat aus meiner Sicht der Java-Desktop-Szene seit 15 Jahren gefehlt.

Auf der Technikseite bemühe ich mich seit einem Jahrzehnt, Teams von einer Hand- zu Industrieproduktion zu führen. Wer eine Küche einrichtet, wird schneller und liefert in der Regel bessere Ergebnisse, wenn er statt in Brettern (Toolkit) in Schränken denkt, in fertigen Küchengeräten statt in Kabeln und Schaltern.

Die Art und Weise, wie Java-Desktop-Teams Oberflächen bauen, kommt mir häufig so teuer und langsam vor, als würden drei richtig schlaue Physiker das erste Mal in ihrem Leben einen Herd zusammen löten, dann aber mit fünf Kochplatten und zwei Öfen und dafür mindestens ein halbes Jahr brauchen – eher zwei. Das ist die übliche Handproduktion. Wünschenswert ist dagegen ein 4-Platten-Herd von Miele, der in drei Tagen geliefert wird, 1000 Euro kostet und von dem man weiß, dass und wie er funktioniert. Das ist Industrieproduktion.

Ich wollte ursprünglich nur das sinnvollste System bauen, um mit Swing von Brettern zu Möbeln, von Kabeln zu Geräten zu kommen – auf Industrieniveau. Als ich dasselbe für JavaFX begonnen hab, war’s im Grunde dasselbe. Nach ein paar Anpassungen ist mein Weg für Swing-Industrieproduktion nun weitgehend Toolkit-unabhängig geworden, geht für JavaFX aber auch für’s GWT und potentiell für so etwas wie Angular 2.0. Meine Abstraktionen für Layout, Datenbindung, Musterunterstützung, Komponentenkonfiguration, Anwendungsrahmenwerk zeigen gleichzeitig, welche alternative Wege genauso oder ähnlich wirken würden; die werde ich auf der W-JAX besprechen.

Ich strebe mittlerweile eine Universal Java Desktop Platform an, bei der man mit einem Programmierstil und weitestgehend gleichen APIs verschiedene Toolkits programmieren kann (bei mir zur Zeit Swing und JavaFX), aber auch das Muster wechseln kann von „Presentation Model“ auf Model-View-Presenter, das Datenbindesystem, die Komponentenerzeugung und das Layoutsystem. Das schützt Investitionen und hilft Teams, ihr Wissen in neuen Welten weiter zu verwenden.

Damit wird die Frage nach dem „richtigen“ Toolkit weniger wichtig. Man kann sie auch nicht pauschal beantworten. Über JavaFX zum Beispiel ist schon so viel dummes Zeug gesagt und geschrieben worden. Wer nur in Brettern denkt und zusammen schustert, für den mögen neuere Bretter interessant sein. Wer fertige Schränke hat, den interessiert ein Brettwechsel weniger, er wird prüfen müssen, ob die neuen Brettern überhaupt zusammen passen. Wer also etwa mit dem SWT, dessen Standardaufbau JFace und dem riesigen Eclipse RCP darüber Oberflächen gebaut hat, der wird mit einem JavaFX ohne irgendwas darauf ganz unglücklich. Wer mit Swing ohne Rahmenwerk einen Music Player entwickelt hat, wird mit JavaFX eher glücklich. Wer in seinen Geschäftsanwendungen auf Swing ein Rahmenwerk setzen musste – wie alle Swing-Teams, die mir begegnet sind – wird etwas Ähnliches auch für JavaFX brauchen. In meinem Vortrag versuche ich, diese Gemengelage soweit aufzudröseln, dass jeder für sich erkennen kann, was sein geeigneter Weg ist, wo eine Veränderung lohnt, was sie kostet und welche Risiken sie bringt. Ich freu‘ mich schon.

WJAX_2015_RGB_weiss_gruen_oUZW-JAX 2015 | 2. – 6. November, München

Erleben Sie Karsten Lentzsch live auf der W-JAX 2015:

Von Swing nach JavaFX

Hier beleuchten wir technische und strategische Gründe, warum man JavaFX möchte, nennen Bedingungen, wann man wechseln kann, zeigen Wege, wie man von Swing nach JavaFX kommt und welche Schwierigkeiten, Kosten und Risiken uns dabei erwarten.

Donnerstag, November 5, 2015 – 12:00 bis 13:00

Moderne Gestaltung für den Java-Desktop

Hier wird frische Gestaltung für den Java-Desktop gezeigt, die man in Swing, SWT und JavaFX umsetzen kann. An vielen Bildschirmbeispielen zeigen wir realistische und günstig machbare Überarbeitungen von Geschäftsanwendungen.

Donnerstag, November 5, 2015 – 17:00 bis 18:00

Tipp: 5-Tages-Special + Kollegenrabatt sichern!

Verwandte Themen:

Geschrieben von
Karsten Lentzsch
Karsten Lentzsch
Karsten Lentzsch ist unabhängiger Berater und Softwareenthusiast. Er entwirft, gestaltet und implementiert seit über zweiundzwanzig Jahren grafische Oberflächen mittels Objekttechnologien. In der Java-Welt zählt er zu den führenden Experten in den Bereichen Gestaltung und Look and Feel. Er berät Großunternehmen beim Entwurf und der Produktion von Java-Client-Anwendungen und veröffentlicht Artikel, Bibliotheken, Beispielprogramme und Produkte zu Java-Gestaltungsthemen. Vor der Gründung seines Design- und Beratungsunternehmens JGoodies hat er Informatik studiert und in kleinen und großen Unternehmen zahlreiche Clients entwickelt.
Kommentare

Hinterlasse einen Kommentar

2 Kommentare auf "Java Desktop – Quo vadis?"

avatar
400
  Subscribe  
Benachrichtige mich zu:
Reiner
Gast

Ohne die erwähnte „Universal Java Desktop Platform“ jetzt zu kennen,

ein derartiges GUI-Abstraktionsframework gibt es bereits: EMF Forms von EclipseSource
(Helming,Koegel). Bei diesem Framework wird eine abstrakte, EMF-basierte GUI-Beschreibung mit verschiedenen Renderern für die jeweilige Zielplattform (Desktop oder Web) umgesetzt.

rjahn
Gast

Sieh dir mal das JVx Framework an. Das ist genau das was du unter „Universal Java Desktop Platform“ verstehst.

Schau dir mal das an: http://blog.sibvisions.com/2015/10/21/code-once-run-anywhere/

Swing und JavaFX sind leider nicht mehr genug.