Начиная с Java 8, вы можете использовать JavaFX WebView Component , который также может использоваться в Swing .
Код так же просто, как:
JFXPanel jfxPanel = new JFXPanel(); // Scrollable JCompenent
Platform.runLater( () -> { // FX components need to be managed by JavaFX
WebView webView = new WebView();
webView.getEngine().loadContent( "<html> Hello World!" );
webView.getEngine().load( "http://www.stackoverflow.com/" );
jfxPanel.setScene( new Scene( webView ) );
});
Он поддерживается механизмом WebKit (версия зависит от JRE и является достаточно актуальной).
Но имейте в виду, что это не полноценный браузер, поэтому не рассчитывайте на поддержку, скажем, HTML5 аудио / видео.
В противном случае, он работает HTML + CSS + JS так же хорошо, как ваш браузер.
Технически, базовым движком является C ++, а не нативный Java.
Но он входит в официальный JRE Oracle, не требует библиотеки, имеет нулевой конфиг, такой же кроссплатформенный, как Java FX, и активно обновляется и поддерживается.
Думаю, он так же хорош, как и нативная Java для большинства случаев использования?
Приведенная ниже информация устарела, поскольку теперь у нас есть WebView на Java.
Пробовал Кобра / Лобо , CSSBox и Летающая тарелка , все на чистой Java. Другие являются либо родными, либо коммерческими.
Содержимое: простой HTML, сгенерированный на лету (в виде строки), встроенный CSS 2.1, без JS.
Короткая история: «Летающая тарелка» наиболее проста в использовании, а рендеринг наиболее корректен, но вам лучше иметь полный контроль над контентом. В противном случае ищите нативное решение.
Длинная история:
CSSBox, кажется, более активен, но, похоже, зависит от некоторых сторонних библиотек. Например, демонстрация зависит от nekohtml, который использует Apache Xerces, который изменил способ работы стандартного синтаксического анализатора Java 1.7 и сломал мою программу, но когда я заставляю его использовать встроенные в Java Xerces, я получаю ClassCastException (InlineBox to BlockBox)
. Не могу заставить его работать в конце. Плюс еще не нашли способ заменить документ в существующем BrowserCanvas
.
Cobra больше не поддерживается, необходимо вручную исправить проблему несовместимости , чтобы она работала в 1.7. Также нужно захватить Mozilla Rhino (не используя JS), но это все. После этого он довольно плавный, просто нужно попросить Logger скрыть сообщения рисования. Рендеринг правильный, а скорость справедлива - до тех пор, пока документ прост. Когда вы начинаете использовать менее распространенные теги или более сложный макет, Cobra довольно быстро разваливается.
Летающая тарелка имеет лучшую поддержку CSS из трех на момент написания (февраль 2011 г.). Настройка очень проста (например, нет необходимости настраивать документ, такой как cobo или domparser, например, cssbox), имеет небольшую зависимость - что также означает отсутствие javascript. Но Летающая тарелка очень строга к тому, что ты ее кормишь. Источник должен быть правильно сформированным XML, например, стиль и сценарий, возможно, должны быть обернуты в CDATA, и если вы используете html-сущности, вы должны объявить DTD (поэтому нет html5 doctype). Однако, если вы встраиваете контент, которым можете управлять, это может быть вашим лучшим выбором.