2012-05-26 3 views
32

У меня есть HTML5 UI и Java-сервер, и я хочу, чтобы избежать перестройки HTML ui в простой Java, поэтому я решил запустить локальный веб-сервер и использовать веб-просмотр, чтобы отобразить его в "родной" окно. Решение похоже на использование JavaFX WebView, который может быть встроен в swing. На бумаге это звучит здорово (особенно потому, что они утверждают, что используют WebKit, который имеет значительно лучшую производительность для моего интерфейса в Chrome/Safari).Производительность WebView в JavaFX

Это работает, но: производительность НЕОБХОДИМО. Заказы величины медленнее, чем то же самое в Chrome, Safari (или даже медленном Firefox). Это буквально непригодно (мой пользовательский интерфейс очень сильно использует JQuery/JS). Кстати, я использую код от this post.

Возникает вопрос:

  1. Может кто-нибудь второй мой опыт? Я просто делаю что-то неправильно или это вызвано JavaFX и, таким образом, «нормальным»?

  2. Любая идея лучше, как этого достичь? В настоящее время я просто запускаю системный браузер, который работает, но не так хорош (не выглядит как интегрированный).

+0

Можете ли вы предоставить ссылку на контент, который вы тестируете? – jewelsea

+0

Какова конфигурация вашего оборудования/программного обеспечения? – jewelsea

+0

Пример кода, на который вы ссылаетесь, микширует Swing и JavaFX. Попробуйте получить доступ к тем же страницам с помощью чистого приложения JavaFX. – jewelsea

ответ

42

Я использовал WebView совсем немного, и обычно производительность была совершенно прекрасной и очень удобной.

  • Соответствие Html5 хорошее.
  • Производительность JavaScript варьируется, но я нашел примерно одну треть скорости последней версии Chrome в соответствии с эталонным тестом V8 от Google (который, по-видимому, настроен на Chrome).
  • Производительность рендеринга, похоже, не была большой проблемой.
  • Очень интенсивные веб-приложения HTML, такие как некоторые из библиотеки эксперимента Chrome, не запускались так быстро, как в некоторых других браузерах.
  • WebGL не поддерживается, поэтому сайты, которые возвращаются к программному рендерингу графики из WebGL, намного медленнее.

Самая большая проблема, с которой я столкнулся с WebView, заключается в том, что она не столь стабильна для ультрасовременных функций и интенсивного использования в качестве других браузеров, но не вызывает серьезных проблем с производительностью.

Вот несколько тестов статистика (WebView используется версия была получены из JavaFX 2.2 билд 9):

Соответствие

Запуск теста html5 в соответствии html5 тест (баллов из 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 

Запуск acid3 тест, WebView баллы 100/100 же, как и в других тестов браузеров, но, как IE9, финальный рендеринг имеет небольшой дефект.

Мусор

Sunspider Java-тест (чем ниже, тем лучше):

 
IE 9.0.6  146.7ms 
Chrome 19  151.5ms 
Firefox 12  185.8ms 
WebView 2.2b9 199.5ms 

Google V8 Java-тест (выше, тем лучше):

 
Chrome 19  15323 
Firefox 12  9557 
WebView 2.2b9 5145 
IE 9.0.6  3661 

Mozilla Kraken Java-тест (ниже, тем лучше):

 
Chrome 19  2416.8ms 
Firefox 12  2112.9ms 
WebView 2.2b9 7988.9ms 
IE 9.0.6  9403.0ms 

Интенсивное Холст

Spinning 3D buddha (выше, тем лучше):

 
Chrome 19  60fps 
Firefox 12  43fps 
IE 9.0.6  16fps 
WebView 2.2b9 7fps 

JQuery

JQuery test suite исполнения (ниже, тем лучше):

 
Chrome 19  21826ms 
WebView 2.2b9 22742ms 
Firefox 12  23554ms 
IE 9.0.6  28247ms 

Основываясь на приведенных выше тестах (работайте на моем рабочем столе Windows 7), пока WebView стабилен и достаточно функциональен для вас, производительность WebView и других браузеров не должна быть проблемой (если ваше приложение не работает есть много 3D-спиннинг-будд. , , :-).

Update

Как утверждает ответа Утойя, в компилятор JavaScript JIT включен для Win 32 битной сборки JavaFX 2.2 и off for the Win 64 bit build в JavaFX 2.2. Это означает, что тесты WebView JavaScript значительно медленнее (как правило, в 4-5 раз медленнее) при запуске 64-битной версии JavaFX и 32-битной версии JavaFX.

+0

любое обновление о том, является ли ситуация компилятора JIT одинаковой или улучшилась? –

+0

У меня нет обновлений. Если у вас есть компьютер с Windows, вы можете попробовать запустить некоторые тесты для проверки производительности последних версий WebView, работающих в 32-битных и 64-битных JVM. – jewelsea

+0

Я не уверен, почему, но качество рендеринга намного меньше, чем хром или firefox в моей системе (linux64/ubuntu). Я могу что-то сделать, чтобы исправить это? – thouliha

8

JavaScript JIT отключен в WebNode для Windows x64. Это может быть причиной вашей проблемы.

+1

интересный. Любой способ включить его вручную/программно? – Daniel

+0

Переключатель для включения/выключения JavaScript JIT является либо внутренним, либо внутренним кодом, для внешнего пользователя не поддерживается общедоступный способ управления этим параметром. AFAIK, JavaScript JIT был отключен только для некоторых версий предварительного просмотра разработчиков Java, но включен для всех версий релиза. Для вышеуказанных тестов я считаю, что JavaScript JIT включен. – jewelsea

+2

это все еще так? –

4

Одна из причин, по которой JavaFX webView выглядит медленнее, заключается в том, что в отличие от веб-браузера он ничего не кэширует. Это должно быть выполнено.

5

Вы не одиноки в этой ситуации. У меня все еще есть проблемы с картами веб-просмотра и google. Вы можете увидеть ссылку ниже. На данный момент у меня нет никакого ответа для вас, и это очень неприятно, я знаю ...

Некоторые примеры моего поста: - https://community.oracle.com/message/12356161

Upvote это, если вы можете: - https://javafx-jira.kenai.com/browse/RT-33217

+0

Есть новости! Проверьте javafx jira! :) @ Daniel – flowx1710

6

Я также столкнулся с JavaFX WebView низкой производительности (медленность, перекрашивать вопросы) для моего сайт (https://mdemo.cqg.com). После некоторого googling я наткнулся на тему Integrating JavaFX 2.0 WebView into a Swing Java SE 6 Application.Среди ответов есть предложение использовать JxBrowser (http://www.teamdev.com/jxbrowser) - компонент Swing/JavaFX на основе Chromium для Java. Я попробовал это для своего сайта. Сайт выполнен хорошо - не медлительность и не перерисовывает проблемы (которые происходят в оригинальном WebView).

+0

Является ли JxBrowser бесплатным или платным инструментом? если платные есть другие бесплатные альтернативы? и спасибо. –

+0

JxBrowser является бесплатным для открытых и академических проектов: https://www.teamdev.com/jxbrowser#evaluate – Vladimir