it-swarm.com.de

Verwenden Sie einen eingebetteten Webbrowser (z. B. Chrome) als GUI-Toolkit für Java-Desktopanwendungen?

Diese HTML5-Websites sehen großartig aus - warum funktionieren meine Java-Desktop-Apps nicht? Swing und SWT sind einfach oldschool. Sie machen ihren Job, aber mit Animation und allem ist es einfach unmöglich, schick aussehende GUIs zu erstellen.

Ich habe mich gefragt: Ist es möglich, HTML5 als GUI-Toolkit zu verwenden? Ich habe eine Bibliothek im Sinn, die eine ähnliche API wie Swing oder SWT hat, aber in HTML5 rendert. Es sollte themenorientiert sein und Sie sollten Zugriff auf die Seite in Java haben (d. H. Eine Fusion zwischen Java und JavaScript/HTML5).

Warum erstelle ich nicht einfach eine Web-App und sende meinen Benutzern die URL dazu? Ich möchte von einer echten Desktop-Integration von Java SE-Apps (Dateien, COM, Tray Icon usw.) profitieren. Nur so etwas wie PhoneGap, aber für Desktop-Betriebssysteme anstelle von Telefonen.

Erstaunlicherweise habe ich im Internet nichts Vergleichbares gefunden. Aber vielleicht habe ich gerade die falschen Suchbegriffe eingegeben? Hat jemand eine Idee?

Oder wenn nicht: Kann ich WebKit/Chrome irgendwie zusammen mit meiner App einbetten? Der Benutzer muss also keine eigene Kopie installieren oder Einstellungen ändern.

28
Mive van Haaven

Zwei Dinge fallen mir ein:

  • Adobe Air , das ist mehr oder weniger genau das, wonach Sie suchen: PhoneGap für den Desktop.
  • Chromium Embedded Framework , mit dem Sie mit etwas Aufwand Chromium als Rahmen für eine Anwendung verwenden können.
9
Mike West

TeamDev Ltd. hat kürzlich die Bibliothek JxBrowser veröffentlicht, mit der Sie tun können, was Sie möchten. Es ermöglicht das Einbetten von Chromium-basierten Webbrowser-Steuerelementen in Java Swing/AWT-Anwendungen. Es unterstützt die Multi-Process-Architektur von Chromium und rendert Webseiten außerhalb des Bildschirms. Mit JxBrowser erhalten Sie eine äußerst leichte Swing Browser-Komponente, die Webseiten genau wie in der Google Chrome-Anwendung anzeigt.

5
Vladimir

Sie sollten JavaFX 2.0 auschecken. Es ermöglicht Ihnen, GUI-Komponenten in FXML anzugeben und unterstützt das CSS-Styling. Es hat auch eine "WebView" -Komponente, mit der Sie Webseiten in einer Anwendung problemlos anzeigen können. 

EDIT 28. November 2015

Der JavaFX-Übersichtsabschnitt wurde verschoben.

Ab JDK 7u6 ist JavaFX in den Standardpaketen JDK und JRE Enthalten. Laden Sie das JDK oder die JRE herunter, um JavaFX zu verwenden.

Wenn Sie nach dem JavaFX Scene Builder-Download suchen, finden Sie Im Abschnitt "Zusätzliche Ressourcen" der Hauptseite von Java SE Download .

Bitte aktualisieren Sie Ihre Links zu dem neuen Standort .

5
alistair

HTML/JavaScript kann in Desktopanwendungen verwendet werden, indem ein HTML-Server in die Anwendung eingebettet wird. Dann wird eine Webseite die GUI sein. Es handelt sich buchstäblich um einige Dutzend Codezeilen, wenn Sie diese verwenden 

Beispiel: einfacher HTTP-Server in Java, der nur Java SE-API verwendet

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

Sie müssen die GUI-Webseite vom Webserver aus bereitstellen (auch auf dem localhost), um den hier beschriebenen Konflikt mit der gleichen Origin-Richtlinie zu vermeiden

3
34n

Einige Zeit ist vergangen, daher weiß ich nicht, ob dies von Nutzen sein kann. Sie können sich aber auch DukeScript ( http://wiki.apidesign.org/wiki/DukeScript ) ansehen, ein Konzept der ursprünglichen Autoren der Netbeans IDE. Soweit ich es verstehen konnte, sollten Java-Anwendungen in einer HTML5-Umgebung entwickelt werden. Es basiert auf dem Browser als Plattform (Chrome wird unterstützt) und auf einer JVM in Javascript, die im Browser ausgeführt wird (eigentlich zwei von ihnen, ihre eigenen bck2brwsr und TeaVM ). Sie können sogar JavaFX verwenden und die Bereitstellung auf Android, iOS oder im Browser durchführen. Schauen Sie sich die Beispiele unter http://dukescript.com an.

3
Pietro Braione

Welche Vorteile erwarten Sie gegenüber einer HTML-GUI in einem Standardbrowser? Viele Programme verfügen über einen eigenen HTTP-Server, um die Entwicklung der Benutzeroberfläche zu erleichtern. Ich lese auch von QtQuick ( YouTube Demo ), habe es aber selbst nie probiert

Ich habe die folgenden Dinge hervorzuheben

  1. Das Debuggen/Testen der GUI ist in einem Browser einfacher
  2. Kleineres Paket
  3. Entwicklungszeitoptimierung
  4. Wirklich plattformübergreifend (zumindest ist es einfacher, plattformübergreifend zu arbeiten, wenn Sie einen HTTP-Server als Anwendungslogikprozessor verwenden)
0
Raffaele