Использовать встроенный веб-браузер (например, Chrome) в качестве инструментария GUI для настольных приложений Java? - PullRequest
28 голосов
/ 11 февраля 2012

Эти веб-сайты HTML5 выглядят великолепно - почему не делают мои настольные Java-приложения?Swing и SWT, ну, просто старая школа.Они делают свою работу, но создавать модные графические интерфейсы с анимацией и все просто невозможно.

Мне было интересно: возможно ли использовать HTML5 в качестве инструментария GUI?Я имею в виду библиотеку, которая имеет API, похожий на Swing или SWT, но отображает в HTML5.Он должен быть отображаемым, и у вас должен быть доступ к странице на Java (т. Е. Некоторое слияние между Java и JavaScript / HTML5).

Почему бы просто не создать веб-приложение и не отправить моим пользователям URL-адрес?Я хотел бы извлечь выгоду из реальной интеграции Desktop приложений Java SE (Файлы, COM, Иконка в трее и т. Д.).Просто что-то вроде PhoneGap, но для настольных ОС вместо телефонов.

Потрясающе я не нашел ничего подобного в Интернете.Но, может быть, я просто ввел неправильные условия поиска?У кого-нибудь есть идея?

Или, если нет: можно ли как-то встроить WebKit / Chrome вместе с моим приложением?Таким образом, пользователю не нужно будет устанавливать собственную копию или изменять какие-либо настройки.

Ответы [ 6 ]

9 голосов
/ 13 февраля 2012

На ум приходят две вещи:

  • Adobe Air , что более или менее точно соответствует тому, что вы ищете: PhoneGap для рабочего стола.
  • Chromium Embedded Framework , которая, с небольшим усилием с вашей стороны, позволит вам использовать Chromium в качестве фрейма для приложения.
5 голосов
/ 12 декабря 2013

TeamDev Ltd. недавно выпустила JxBrowser библиотеку, которая позволяет делать то, что вы хотите. Он позволяет встраивать управление веб-браузером на основе Chromium в приложения Java Swing / AWT. Он поддерживает многопроцессную архитектуру Chromium и выводит веб-страницы за пределы экрана. С JxBrowser вы получаете совершенно легкий компонент Swing Browser, который отображает веб-страницы точно так же, как в приложении Google Chrome.

5 голосов
/ 29 августа 2013

Вы должны проверить JavaFX 2.0 .Он позволяет вам определять компоненты GUI в FXML и поддерживает стилизацию CSS.Он также имеет компонент «WebView», который позволяет легко отображать веб-страницы в приложении.

РЕДАКТИРОВАТЬ 28 ноября 2015

Раздел обзора JavaFX перемещен.

Начиная с JDK 7u6 JavaFX входит в стандартСвязки JDK и JRE.Загрузите JDK или JRE для использования JavaFX.

Если вы ищете загрузку JavaFX Scene Builder, вы найдете ее в разделе «Дополнительные ресурсы» главной страницы загрузки Java SE.

Пожалуйста, обновите ваши ссылки на новое местоположение .

3 голосов
/ 18 декабря 2014

Прошло некоторое время, поэтому я не знаю, может ли это быть полезным. Но вы можете взглянуть на DukeScript (http://wiki.apidesign.org/wiki/DukeScript), - концепцию от первоначальных авторов IDE Netbeans. Насколько я понял, идея заключается в разработке приложений Java в среде HTML5. Она опирается на браузер в качестве платформы (поддерживается Chrome) и на JVM в Javascript, который запускается внутри браузера (на самом деле это две из них, их собственные bck2brwsr и TeaVM ). Вы даже можете использовать JavaFX, и вы можете выполнить развертывание на Android, iOS или в браузере. Посмотрите примеры http://dukescript.com.

3 голосов
/ 04 января 2014

Одним из способов использования HTML / JavaScript в настольных приложениях является встраивание в приложение HTML-сервера.Тогда веб-страница будет GUI.Это буквально несколько десятков строк кода, если вы используете

Пример: простой HTTP-сервер в Java, использующий только API Java SE

Документы: http://docs.oracle.com/javase/7/docs/jre/api/net/httpserver/spec/com/sun/net/httpserver/package-summary.html

Вам необходимо обслуживать веб-страницу с графическим интерфейсом пользователя с веб-сервера (даже на локальном хосте), чтобы избежать конфликта политик JavaScript, аналогичного описанному здесь

0 голосов
/ 11 февраля 2012

Какие преимущества вы ожидаете по сравнению с HTML-интерфейсом в стандартном браузере? Многие программы поставляются с собственным HTTP-сервером для простоты разработки пользовательского интерфейса. Я также читал о QtQuick ( YouTube demo ), но на самом деле никогда не пробовал себя

У меня есть следующие вещи, на которые стоит обратить внимание

  1. Отладка / тестирование графического интерфейса проще в браузере
  2. Меньшая упаковка
  3. Оптимизация времени разработки
  4. Действительно кроссплатформенный (по крайней мере, кроссплатформенность проще, когда в качестве логического процессора приложения используется HTTP-сервер)
...