Performance de WebView en JavaFX
j'ai une interface utilisateur HTML5 et un backend Java et je veux éviter de reconstruire L'interface utilisateur HTML en java simple, donc mon idée était d'exécuter un serveur web local et d'utiliser un webview pour le rendre dans une fenêtre" native". La solution semble être D'utiliser un WebView JavaFX qui peut être intégré dans swing. Sur le papier, cela semble génial (surtout depuis Qu'ils prétendent utiliser WebKit qui a une performance nettement meilleure pour mon UI dans Chrome / Safari).
cela fonctionne, mais: la performance est INCROYABLEMENT MAUVAIS. Des ordres de grandeur plus lents que la même chose dans Chrome, Safari (ou même le plus lent Firefox). Il est littéralement inutilisable (mon UI utilise assez largement JQuery / JS). Btw, j'utilise le code de ce post .
la question Est:
-
quelqu'un Peut mon expérience? Est-ce que je fais quelque chose de mal ou est-ce causé par JavaFX et donc "normal"?
-
une meilleure idée comment y parvenir? Je suis actuellement simplement mise à feu le navigateur de système qui fonctionne, mais n'est pas aussi agréable (ne semble pas intégré).
5 réponses
J'ai utilisé WebView un peu et habituellement la performance était parfaitement fine et très utilisable.
- HTML5 la conformité est bonne.
- les performances JavaScript varient, mais je l'ai trouvé environ un tiers de la vitesse d'une version récente de Chrome selon la référence V8 de Google (qui Chrome est probablement accordé contre).
- rendre la performance ne semblait pas être un problème.
- Les applications Web HTML très intensives, comme certaines dans la bibliothèque D'expérimentation de Chrome, n'ont pas démarré aussi rapidement que d'autres navigateurs.
- WebGL N'est pas pris en charge de sorte que les sites qui retombent dans le rendu logiciel de graphiques à partir de WebGL sont beaucoup plus lents.
le plus gros problème que J'ai eu avec WebView est qu'il n'est pas tout à fait aussi stable pour les fonctionnalités de pointe et l'utilisation intensive que d'autres navigateurs, mais pas vraiment de problèmes de performance graves.
voici quelques statistiques de référence (la version WebView utilisée provient de JavaFX 2.2 build 9):
conformité
Running html5 test html5 conformité (scores de 500):
Chrome 19 402 + 13 bonus points Firefox 12 345 + 9 bonus points WebView 2.2b9 296 + 7 bonus points IE 9.0.6 138 + 5 bonus points
Running an acid3 test, webview scores 100/100 même que les autres navigateurs de test, mais, comme IE9, le rendu final a une légère imperfection.
Javascript
Sunspider benchmark Javascript (lower is better):
IE 9.0.6 146.7ms Chrome 19 151.5ms Firefox 12 185.8ms WebView 2.2b9 199.5ms
Google V8 benchmark Javascript (higher is better):
Chrome 19 15323 Firefox 12 9557 WebView 2.2b9 5145 IE 9.0.6 3661
Mozilla Kraken benchmark Javascript (lower is better):
Chrome 19 2416.8ms Firefox 12 2112.9ms WebView 2.2b9 7988.9ms IE 9.0.6 9403.0ms
Canevas Intensif
la Filature "1519570920 3D" bouddha (plus c'est mieux):
Chrome 19 60fps Firefox 12 43fps IE 9.0.6 16fps WebView 2.2b9 7fps
JQuery
JQuery suite de tests "1519300920 d'exécution" (en bas c'est mieux):
Chrome 19 21826ms WebView 2.2b9 22742ms Firefox 12 23554ms IE 9.0.6 28247ms
basé sur les points de repère ci-dessus (exécuter sur mon bureau Windows 7), aussi longtemps que WebView est stable et assez fonctionnel pour vous, puis la performance de WebView vs les autres navigateurs ne devraient pas être un problème (tant que votre application ne prend pas beaucoup de 3D filature bouddhas . . . : -).
mise à Jour
comme l'indique la réponse d'uta, le compilateur JavaScript JIT est activé pour la compilation Win 32 bits de JavaFX 2.2 et off pour la compilation Win 64 bits de JavaFX 2.2. Cela signifie que les benchmarks JavaScript de WebView sont significativement plus lents (généralement 4 à 5 fois plus lents) quand exécution de la version JavaFX 64 bits vs la version JavaFX 32 bits.
JavaScript JIT est désactivé dans WebNode Pour Windows x64. Que pourrait être une des raisons de votre problème.
J'ai également rencontré JavaFX WebView mauvaise performance (lenteur, problèmes de repeindre) pour mon site web ( https://mdemo.cqg.com ). Après quelques googling je suis tombé sur le thème intégration JavaFX 2.0 WebView dans un Swing Java SE 6 Application . Parmi les réponses, il y a une proposition d'utiliser JxBrowser ( http://www.teamdev.com/jxbrowser ) -- composant Swing/JavaFX à base de Chrome pour Java. Je l'ai essayé pour mon site. Site bien performé-pas de lenteur, ni repeindre les questions (qui se produisent dans l'original WebView).
Vous n'êtes pas seul dans cette situation. J'ai toujours des problèmes avec webview et google maps. Vous pouvez voir le lien ci-dessous. Pour le moment je n'ai pas de réponse pour vous et c'est très désagréable, je le sais ...
quelques exemples de mon poste : - https://community.oracle.com/message/12356161
Upvote ceci si vous pouvez : - https://javafx-jira.kenai.com/browse/RT-33217
L'une des raisons pour lesquelles JavaFX webView semble être plus lent est que, contrairement à un navigateur web, il ne cache rien. Ce doit être inplemented.