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:

  1. quelqu'un Peut mon expérience? Est-ce que je fais quelque chose de mal ou est-ce causé par JavaFX et donc "normal"?

  2. 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é). 

32
demandé sur Community 2012-05-26 05:29:30

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.

44
répondu jewelsea 2012-09-16 21:13:49

JavaScript JIT est désactivé dans WebNode Pour Windows x64. Que pourrait être une des raisons de votre problème.

8
répondu uta 2012-07-25 12:25:21

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).

6
répondu Stanislav Berkov 2017-05-23 11:45:49

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

5
répondu flowx1710 2014-04-04 12:16:43

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.

4
répondu Spiff 2013-07-29 07:03:04