Hallo zusammen

Ich möchte auf folgenden Abschnitt aus der
jxBrowser-Ankündigung mit mehr technischen Details für euch Entwickler eigehen:
Was bringt diese Änderung?
Der neue Browser basiert auf Chrome und ist damit deutlich schneller und effizienter als der mit Java mitgelieferte JFX-Browser. Das macht bestehende Anwendungen schneller und ermöglicht User-Apps-Entwicklern bessere und flüssigere Apps in ihre Channel zu bringen.
Allgemeines & KontextDer jxBrowser ist eine Komponente die den bisherigen Java-hauseigenen JavaFX-WebView ersetzt. Dieser JavaFX-WebView basiert auf einer ziemlich alten und modifizierten WebKit (Web Browser Engine) Version. Der neue jxBrowser setzt hier auf Chromium als Web Browser Engine. Dieser Chromium steckt im Kern auch im Google Chrome Browser, dem Opera Browser und in den meisten Browsern auf Android (vor allem natürlich wenn es Google Chrome for Android ist :P). Dieser Android-Browser wird auch in unserer Android App als WebView für eure UserApps verwendet.
Allerdings müssen wir aus Kompatibilitätsgründen (
noch! Weitere Infos siehe hier) auf die etwas ältere Version des jxBrowsers zurückgreifen, die einem "Chrome 49" entspricht. Aber wie gesagt, wir planen nicht, dass das für immer so bleibt.
Und noch mal der Hinweis, dass das Browser-Applet diesen jxBrowser nicht enthält, hier wird weiter der JavaFX-WebView verwendet.
Vorteile bei Kompatibilität & DokumentationDurch den Wechsel von einer ziemlich unbedeutenden Web Browser Engine zu der größten und am weitesten verbreiteten Web Browser Engine ergeben sich für uns alle und demnach auch für euch Vorteile. z.B. gibt es auf der
von mir des öfteren hoch gelobten "Dokumentation des Web", den
MDN Web Docs zu jedem Featrure, HTML, CSS und JavaScript unten auf der Dokumentationsseite den Abschnitt "Browser compatibility"/"Browserkompatibilität" in dem detailliert aufgeführt ist ab welcher Browser-Version das jeweilige Feature funktioniert (und noch mehr Details). Da der jxBrowser ein "normaler" Chrome (Version 49) ist, könnt ihr diese Information nun zum nachschlagen verwenden.
Dieser "jetzt kann man Informationen zu Problemen und Dokumentationen nachschlagen"-Grundsatz gilt jetzt für fast alle Web-Features die ihr in eurer App verwenden wollt oder schon verwendet.
Durch die deutlich bessere Web Browser Engine werden sich auch diverse Probleme, Bugs oder sonstige (teils komplizierte) Komischkeiten mit HTML/CSS/JavaScript in Luft auflösen. Und gleubt mir, das ist einer der Hauptgründe warum wir das Projekt intern so vorangetrieben haben und selbst auf jeden Release gewartet haben. Wir sind leider viel zu oft an die Grenzen des JavaFX-WebView gestoßen.
Welche Web-Technologien oder HTML/CSS/JavaScript kann ich denn jetzt zusätzlich verwenden?Bevor ich hier jetzt wirklich alles aufliste geb ich euch einfach einen Vergleich an die Hand. Unter
dieser URL von HTML5Test findet ihr einen Feature-Vergleich von: JavaFX-WebView (erste Spalte), dem aktuell eingesetzten jxBrowser (zweite Spalte) und dem aktuellen Chrome 66 (dritte Spalte).
Ein paar Highlights aus den neuen Möglichkeiten/APIs (ich hab nicht alles getestet!):
-
WebGL API (verwendet z.B. Unity3D)
-
Gamepad API-
Web Animations-
requestAnimationFrameBitte schaut bei allem aber auf die besagte Browserkompatibilität, nicht alles davon wird z.B. auch im HTMLChat für alle funktionieren (I'm looking at you, IE!).
Performance und "Lightweight or Heavyweight" oder warum Spiele-Apps eher PopUps verwenden solltenDer jxBrowser wird von uns in zwei Modi die er selbst mitbringt eingesetzt: Lightweight und Heavyweight.
Heavyweight bedeutet hier z.B. Hardware-Beschleunigung (z.B. per Grafikkarte). Dieser Modus ist das was ihr aus eurem Browser und dem HTMLChat gewohnt seid. Diesen Heavyweight Modus verwenden wir ausschließlich in PopUps. Das hat technische Gründe, da es sonst zu Problemen in der Interaktion mit unserer restlichen PC-App kommen kann. Wer also grafisch aufwendige Spiele, z.B. mit Hilfe von Unity3D bereitstellen will, der sollte dafür den PopUp-Modus verwenden.
Alle anderen HTML-UI-Modi verwenden den Lightweight Modus. Dieser hat keine Hardware-Beschleunigung und rendered alles mit der CPU. Dementsprechend ist er nicht ganz so performant wie sein schwergewichtiger Bruder.
Und zu Performance generell: alleine durch den Wechsel auf Chrome sollten eure Apps nun performanter laufen.
DevToolsDer vermutlich glitzerndste Diamant unter den neuen Features sind die mitgelieferten DevTools. Eine Doku der DevTools findet ihr
hier auf der Seite von Google Chrome. Allerdings müsst ihr natürlich beachten, dass die DevTools Version auch die von Chrome 49 und nicht dem aktuellsten Chrome ist. Diese DevTools kennt ihr vielleicht schon vom Entwickeln von UserApps für den HTMLChat aus Firefox oder Chrome.
Ihr könnt die DevTools aktuell nur auf dem Dev-Server verwenden. Dort dann einfach den Fokus in eure UserApp HTML-UI setzen und "CTRL+SHIFT+I" drücken. Dann öffnen sich die DevTools und ihr könnt alles machen was ihr euch vorstellen könnt. Ihr werdet es lieben!
FazitAuch wenn der neue Browser nicht der allerneuste ist eröffnet er uns und euch allen doch eine ganze Menge mehr Möglichkeiten. Er schaltet eine Menge mehr Features frei, ist deutlich performanter und das Entwickeln mit ihm und für ihn wird sich für jeden von euch deutlich verbessern und leichter werden. :)
Happy coding. :)