Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 1

Приходят на ум две вещи:

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

Ответ 2

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

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

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

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

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

Обновите свои ссылки на новое местоположение.

Ответ 3

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

Ответ 4

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

Пример: простой HTTP-сервер в Java с использованием только Java SE API

Docs: http://docs.oracle.com/javase/7/docs/jre/api/net/httpserver/spec/com/sun/net/httpserver/package-summary.html

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

Ответ 5

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

Ответ 6

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

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

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