Du bist nicht angemeldet. [Anmelden]
Optionen
Thema bewerten
Verbesserungen / Updates die User Apps betreffen. - #2898747 - 24.04.2018, 19:22:35
IgelchenM
​Laubhaufenbewohner

Registriert: 10.02.2005
Beiträge: 1.451
Ort: Bochum
In diesem Beitrag sammeln wir alle Veränderungen / Verbesserungen die das Thema User Apps betreffen. Alternativ könnt ihr euch natürlich auch über den Changelog über die aktuellen Änderungen / Verbesserungen informieren.

Aufzählungen in diesem Beitrag


Changelog der vergangenen Jahre


[zum Seitenanfang]  
Re: Verbesserungen / Updates die User Apps betreffen. [Re: IgelchenM] - #2898749 - 24.04.2018, 19:46:23
IgelchenM
​Laubhaufenbewohner

Registriert: 10.02.2005
Beiträge: 1.451
Ort: Bochum
Antwort auf: martin070476
Hallo zusammen! :-)

Wir haben soeben die Umstellung vom intern verwendeten JFX-Browser auf den JX-Browser abgeschlossen. Alle in Knuddels dargstellte HTML-Inhalte sind somit für Nutzer der PC/Mac/Linux-App ab sofort im besseren JX-Browser verfügbar.

Was muß ich als Nutzer machen?

Nichts. Die Änderungen sind mit dem nächsten Update der PC/Mac/Linux-App automatisch live. Sie betreffen Elemente wie den Hausknuddel, Code aktivieren, Knuddel übertragen, Code-Menü, /FA, viele Smiley-Features sowie die meisten User-Apps.

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.

Wir wünschen euch viel Spaß mit der neuen Technik. :-)


Ergänzend für diese neue Änderung ist, dass ihr folgende Möglichkeiten habt, folgende API-Calls durchzuführen:

Möglichkeit 1:
Die User-App unterstützt JFX ohne Probleme.
- Es muss nichts geändert werden.

Möglichkeit 2:
Die User-App hat unterschiedliche Versionen für JX und JFX.
- Hierfür kann Client.getHostFrame().getBrowserType() verwendet werden um clientseitig zwischen den verschiedenen Versionen umzuschalten.

Möglichkeit 3:
Bestimmte HTML-Views unterstützen den JFX-Browser nicht mehr.
- Für diese kann im Server per appContent.setAllowJFXBrowser(false); die Ausführung im JFX-Browser unterbunden werden.
- Der App-Entwickler muss sich um das Thema nicht weiter kümmern.
- Hinweis: Dies kann pro AppContent unterschiedlich eingestellt werden, sodass z.B. ein kompatibles Minigame im JFX angezeigt werden kann, jedoch ein inkompatibles Minigame unterbunden wird.


Bearbeitet von IgelchenM (27.04.2018, 19:18:25)
Bearbeitungsgrund: Nachtrag hinzugefügt.
_________________________
Wo zum Teufel ist dieser Wayne wenn man ihn braucht?!

[zum Seitenanfang]  
Re: Verbesserungen / Updates die User Apps betreffen. [Re: IgelchenM] - #2899102 - 26.04.2018, 19:56:37
TobyB
​Knuddelsteam

Registriert: 21.11.2003
Beiträge: 6.506
Hallo zusammen :-)


Ich möchte auf folgenden Abschnitt aus der jxBrowser-Ankündigung mit mehr technischen Details für euch Entwickler eigehen:
Antwort auf: martin070476
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 & Kontext
Der 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 & Dokumentation
Durch 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
- requestAnimationFrame
Bitte 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 sollten
Der 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.

DevTools
Der 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!

Fazit
Auch 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. :)
_________________________
There is no good without evil, but evil must not be allowed to flourish.
There is passion, yet peace; serenity, yet emotion; chaos, yet order.

[zum Seitenanfang]  
Re: Verbesserungen / Updates die User Apps betreffen. [Re: TobyB] - #2910050 - Gestern um 18:57
TobyB
​Knuddelsteam

Registriert: 21.11.2003
Beiträge: 6.506
Seit eben ist eine aktualisierte Version der API-Dokumentation live. :)
_________________________
There is no good without evil, but evil must not be allowed to flourish.
There is passion, yet peace; serenity, yet emotion; chaos, yet order.

[zum Seitenanfang]