【问题标题】:How to create a desktop app for the existing web application?如何为现有的 Web 应用程序创建桌面应用程序?
【发布时间】:2019-06-14 00:47:02
【问题描述】:

好吧,我在创建问题之前尝试做一些研究,但只找到了一点。

基本上,我有一个基于 Spring 的 Web 应用程序。显然,您可以使用 HTTP 请求和 URL 浏览 Web 应用程序。如果要编辑用户,请执行 GET 请求 /users/edit/{id} 并出现一个新页面。然后您对用户进行一些更改并执行POST 请求/users/edit/{id} 并假设出现主页。

所以,现在我需要创建一个可以做同样事情的桌面应用程序。 我是否需要重写整个应用程序以将其移植到桌面上?是否有可能以某种方式从桌面应用程序向服务器发出 HTTP 请求,然后得到响应并处理它?或者也许有适当的方法来做到这一点?

我觉得这是一个很大的话题,但我只需要你指出我正确的方向,因为我缺乏同时创建桌面和网络应用程序的经验(我想说,我从未将应用程序从网络移植到桌面,反之亦然)。

之前我使用 JavaFX 创建了一些应用程序,我想再次将其用作桌面应用程序的 GUI 平台。

【问题讨论】:

  • 你为什么不寻求像 Electron 这样的解决方案
  • 纯Java:java.net.HttpURLConnection;如果你使用 Spring 依赖项:RestTemplate 或者我真的像 @Sand 那样推荐:使用 Electron,因为你真的不想要多个代码库基本上完成相同的事情。
  • 好吧,我来看看 Electron。

标签: java spring javafx desktop-application


【解决方案1】:

您可以寻求Electron 之类的解决方案。

它是一个框架,用于使用 JavaScript、HTML 和 CSS 等 Web 技术创建本机应用程序。它使用Chromium 和Node.js。您可以使用最初为您的 Web 应用程序开发的前端和后端组件来开发您的桌面 GUI 应用程序。

我只是在给你指路。您可以查看此解决方案,它也是开源的。

【讨论】:

  • 如果我错了,请纠正我。使用 Electron 我仍然可以向后端工作的服务器发出请求吗?而我唯一需要做的就是为桌面应用程序创建一个前端。
  • 没错。现代应用程序开发方法创建了一个可以完成所有工作的后端,然后可以创建多个使用相同 HTTP API 的前端。 Http 不再为 Web 保留。例如,如果您曾经想创建一个移动应用程序,那么相同的后端仍然是相同的,您只需要专注于为设备创建一个漂亮的 UI。
  • @AlexRoig 很好,谢谢。但是,如果我想创建一个能够进入离线模式的桌面应用程序怎么办?它将如何使用 HTTP API?当我需要为桌面独立应用程序重新创建后端时是否可以选择?
  • 这很棘手,但可能。现代浏览器具有不同的持久性选项,例如 LocalStorage、SessionStorage、IndexedDB 和 Web SQL。您可以在连接存在时获取数据并将数据保存在浏览器的数据库中。如果 Internet 连接处于活动状态,则直接使用 API,如果没有,则查询本地数据。您还可以创建一个队列来保存离线工作时无法保存的数据。
  • 最后,检查 Service Worker。他们将帮助您进行缓存以及从在线到离线的转换,反之亦然。有一些例子:coryrylan.com/blog/…
【解决方案2】:

如果您打算从头开始开发前端,我建议您使用 Ionic Framework 之类的东西,在最新的 beta 4 中,您可以编写一次运行任何地方(Web、PWA、带 Electron 的桌面,并构建原生为 iOS 和 Android 构建)。 基本上,Ionic 是一个 Angular 7 库/超集,它允许您基于 web 视图创建移动应用程序。这个 webview 可以以原生方式嵌入并在任何设备上运行。

即使相同的代码库可以在多个设备上运行,您也可以在每个平台上自定义外观和感觉,并通过 Cordova、Electron 或 Capacitor 访问本机设备功能和硬件。

如果您不想重写网络客户端,您可以使用任何具有您想要的首选语言的桌面框架。任何现代语言/框架都将允许您向后端发出 HTTP 请求并通过 API 获取数据。 老实说,现在我认为 JavaFX 不是最好的选择,我建议您使用基于 Web 的方法。

祝你好运!

【讨论】:

    猜你喜欢
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    • 2012-07-17
    相关资源
    最近更新 更多