开发者社区> 问答> 正文

请问有没有人实现过将 java 和前端项目一起打包成桌面应用程序的?

是这样的,我已经有了后端的 java 项目和前端的 angular 项目,现在在想有没有什么办法能将它们一起打包成一个桌面应用,这样既可以用 angular 做页面,又能用 java 处理本地文件,这样就灵活多了。

也尝试了一些方案,比如 electron、javafx、javapackager 等,但是都有些或大或小的问题。

比如如果用 electron 打包的话,如何嵌入 jre 来运行 jar 包是个问题;如果用 java 工具打包的话,如何嵌入浏览器又是个问题。

问一下有没有人实现过类似需求的,可以分享一下经验吗?

展开
收起
OSC开源社区 2024-06-15 17:17:13 12 0
1 条回答
写回答
取消 提交回答
  • 将 Java 后端和 Angular 前端打包成桌面应用确实是一个常见的需求,尤其是在需要离线操作或增强桌面体验的场景下。虽然存在一些挑战,但有一些方法可以尝试解决这些问题。

    1. Electron + Java (JRE):

      • 使用 Electron 来构建桌面应用的外壳,它可以加载 Angular 应用作为 Web 内容。
      • 对于 Java 后端,可以考虑使用 Electron-JNIJavaBridge 这样的库来在 Node.js 中调用 Java 代码。这通常需要本地库的构建和安装,以及 JRE 的打包。
      • 另外,可以使用 Electron Builderpkg 这样的工具来包含 JRE 在内,使其成为应用的一部分。这可能会增加应用的大小,但确保了运行时环境。
    2. JavaFX + WebEngine:

      • 如果你的 JavaFX 版本支持(Java 11+),你可以使用 javafx.web 模块中的 WebEngine 来加载 Angular 应用作为一个 Web 页。
      • 你需要将 Angular 应用打包成静态资源,然后在 JavaFX 的 WebView 中加载。这样,Java 代码可以直接处理本地文件和与 Angular 交互。
      • 注意,这种方法可能不支持所有现代浏览器的功能,因为它依赖的是内置的WebKit引擎。
    3. JavaFX + WebStart (已弃用):

      • 虽然 Oracle 已经弃用了 Java Web Start,但如果你的环境支持,可以考虑使用它来启动 JavaFX 应用,该应用可以包含一个 WebView 来加载 Angular 应用。
      • 不推荐此方法,因为安全性问题和长期支持的缺失。
    4. 第三方库:

      • 有一些库如 JxBrowser 提供了在 Java 应用中嵌入 Chromium 浏览器引擎的能力,这样你可以加载 Angular 应用并同时处理本地文件。
    2024-06-16 08:20:08
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载