我有一个使用 JavaFx 作为前端和 java 作为后端语言的桌面应用程序。这很好,直到我需要在移动设备上运行相同应用程序的一些特殊功能(2-3 年前)。因此创建了实现这些新功能的 android 应用程序(它是第一个目标操作系统)(几乎没有重复的重叠功能)。桌面客户端和安卓客户端使用 P2P 协议同步信息。
到目前为止这很好,但最终发现很难在 GUI 几乎相似的地方维护单独的代码。另一个问题是使用 JavaFx 客户端和 Android 实现更丰富的 GUI 体验(尽管获得原生外观)。使用 JavaFx 创建复杂的组件(如树或嵌套的复杂表)非常繁琐。
在研究了最近的趋势之后,我确信我应该使用基于 HTML5/CSS3/JavaScript 的 GUI,我可以根据不同设备的要求进行打包(例如,用于桌面的Electron和用于移动的Cordova )。我看到我的基本 html 代码将保持不变的优势。
现在的问题是,我不想在服务器端使用 node.js 并且想继续使用我的 java 后端。如果我使用 Web 技术重写完整的 GUI,那么与我的 java 代码进行通信的最佳选择是什么。
请注意,我不希望客户端-服务器模型避免嵌入式服务器开销(因此拥有 REST 服务超出了范围)。
关于项目的一些细节
它需要大量图形并使用 OpenGL 和 OpenGL ES
目前 GUI(JavaFX 或 Android)通过直接调用 Java 后端代码(从 GUI -> 后端)和引发事件(后端 -> GUI)进行通信。
新版本通过新的二进制文件交付给用户,因此不需要自动更新。
我看到第一个要求将通过 WebGL 支持框架/工具包来满足。我正在寻找如何从上面实施第二点。
我经历了一些像下面这样的问题,但他们都在谈论基于客户端服务器的架构或在 JavaFx(WebView 或 JxBrowser)中嵌入浏览器,或者使用 JavaFX-Android SDK 直接在 android 上移植 JavaFX 应用程序,但根据我的要求,我既不想客户端-服务器不继续使用 JavaFx。
如何使用 HTML 和 CSS 作为 Java 应用程序 GUI?
是否可以使用 Java 后端和 Web 技术 UI 创建桌面应用程序
总结一下 - 如果我使用 Web 技术,那么从 GUI 到 Java 的通信方式是什么,反之亦然,而不是基于服务器的应用程序。我发现的一个是 node-java 但不确定它是否是正确的方法并且可以依赖于未来的 java 版本(目前使用 java 1.8)