【问题标题】:Is it possible to create Desktop Application using Java backend & Web Technologies UI是否可以使用 Java 后端和 Web 技术 UI 创建桌面应用程序
【发布时间】:2010-08-04 04:38:55
【问题描述】:

我想用 Java 和 Web 技术创建一个桌面应用程序。选择 Java 的主要原因是它是免费的、开源的,因此我们的投资将是最小的,并且我们会在许可成本等方面节省大量投资。另外,选择 Web 技术的主要原因是因为我们目前的程序员精通 HTMl、css、Ajax 等 Web 技术,并且我们在使用 Web 技术创建令人惊叹的 UI 方面拥有丰富的经验。

我会给你一些关于我们想要创建的软件的想法。这将是一个基于桌面的软件,即类似于 ERP 软件的东西。

关键要求是应该有一个很棒的用户界面,它应该是快速的并且不是很耗费资源。

我听说实现出色的 GUI 是可能的,但在 Java 中很难。它可以完成,但很复杂,而在 Microsoft 产品的 Visual Studio 中做同样的事情非常简单。

我还检查了 Adob​​e Air、Nokia QT 等,但它们对我们来说都非常昂贵,我们正在寻找使用 Java 技术的前端浏览器 UI 和后端嵌入式服务器/数据库。

是否可以创建一个桌面软件,其中 UI 是使用 Web 技术创建的,并且有一个嵌入式服务器(如 jetty 或 tomcat)和数据库,后端编程将使用 Java。 JavaFX 如何适应这种情况?

所以基本上,桌面应用程序会有一个嵌入式浏览器(mozilla 或一些可以与软件打包的 java 浏览器),但最终用户永远不应该意识到这一点。

我期待得到同样的反馈。您能否提供一些以类似的 java + web 技术组合创建的软件示例。

我确实研究了一些类似 PulpTunes 和 Zimbra 的软件,但它们似乎是连接到互联网来显示数据。我们的软件将完全是一个离线桌面应用程序。

【问题讨论】:

  • “相当简单”仅在 GUI 本身相当简单时才成立。

标签: java browser desktop embedded-jetty


【解决方案1】:

首先,这是可能的。如果您正在寻找示例,请查看http://wiki.eclipse.org/Hudson-ci/Meet_Hudson。 如果您深入研究他们的代码,您可以获得基本架构。它不使用任何嵌入式数据库。 您是说您的应用程序将始终处于脱机状态,在这种情况下,我建议您使用 Eclipse 插件开发等技术进行纯桌面应用程序。

如果您已经下定决心,根据我对类似应用程序的经验,以下几点可以帮助您,

  1. 虽然您的应用程序处于离线状态(我假设您的应用程序不需要连接到任何用例的任何服务器,但用户机器可以访问互联网),您需要交付更改(例如,更改 html 或 jsp page )/错误修复对最终用户透明。 JNLP/Java web start 非常适合这个。

  2. 如果您要使用 JNLP 安装方式,您的启动器应负责最终用户计算机上的嵌入式数据库安装和端口(这比看起来的问题大)。

  3. 此外,如果您通过 JNLP 启动服务器(在我的例子中为 Jetty),您将遇到由于权限问题而导致的类加载错误。准备好挖掘服务器代码。我很久以前就做过了,现在我没有代码来指出确切的问题。

  4. 在安装过程和应用程序启动期间显示进度条。您的战争部署需要一些时间,并且用户需要知道应用程序正在启动并且正在进行中。你最终会写一些摇摆 UI。

  5. 应用程序启动后,在用户系统的默认浏览器中自动启动应用程序的 URL。您不需要嵌入式浏览器。检查http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/desktop_api/

  6. 我使用 MySql 作为嵌入式数据库。检查Embedding mysql in java desktop application。它对我有用,我没有遇到任何问题。

【讨论】:

    【解决方案2】:

    是的,这是可能的。请参阅https://github.com/jreznot/electron-java-app 演示。在那里,您将找到一种在 Java 上构建基于 Electron 的应用程序的简单方法,无需编译为 JS,只需使用 Vaadin UI 嵌入 Jetty 实例内的 Java 应用程序。

    【讨论】:

      【解决方案3】:

      你说得对,如果你自己开发一个项目,java 是很棒的。

      服务器端编码可以使用Spring(用于MVC、数据库等......非常丰富和轻量级的框架,易于学习和理解)和hibernate(用于数据库处理的ORM框架,为任何数据库服务器提供方言)。

      对于 UI,您可以使用 Spring MVC 或 JSF 或 GWT 或 javaFX。 JavaFX 提供 JNLP 下载,在 java 上运行,无需浏览器。检查链接以获取更多 JavaFX 示例。 http://javafx.com/samples/

      所以它在你,你想在 UI 方面使用什么。如果您更喜欢 Web UI(我的意思不是 javaFX),那么您可以有很多选择。

      对于 Ajax,您将拥有支持简单 ajax 的库。像 DWR (Easy Ajax, JS to JAVA) 和许多其他的 JS 库像 yahoo, jQuery 等等.. 都可以使用。

      希望这会有所帮助。

      【讨论】:

        【解决方案4】:

        恕我直言,运行网络服务器只是为了用 js 和 ajax 之类的东西创建桌面应用程序的整个想法太可怕了……我听说过 Apple-creator Titanium 它允许使用网络技术创建跨平台应用程序。还有其他几个类似的程序。

        我认为你最终会更好地为 java ui 购买一个好的 wyswing Swing 设计工具,这将花费你几百美元,但会为你节省很多开发麻烦。很难相信布置一个漂亮的桌面应用程序比布置一个网页更复杂。

        【讨论】:

          【解决方案5】:

          我没有得到嵌入式码头/tomcat 部分。您希望桌面应用程序运行与数据库对话的嵌入式服务器吗?那么每个桌面应用都会打开一个数据库连接?

          为什么不使用 Java 桌面应用程序将 HTTP 请求发送到连接到数据库并处理请求的 JavaEE 服务器?所以基本上,一个 Java 客户端(它可以像您的开发人员一样丰富)替换浏览器。这为您提供了更多的可扩展性等。

          我们有一个类似(尽管更复杂)的产品,使用 - 桌面上的 Swing + Apache Commons HttpClient。这会向服务器发出带有序列化二进制数据的 HTTP POST 请求。 - 在 Web 容器中运行的调度程序 servlet,它在服务器上重新创建 Java 对象并执行请求。

          【讨论】:

            【解决方案6】:

            我可能会为此感到震惊,但我建议使用 JavaFX。我们已经成功实现了一个 JavaFX 应用程序,供一家大公司内部使用。优点是软件在服务器端“受控”(因此,没有人会拥有“旧”版本)。安装工作量很小(Java Web Start 为您解决了这个问题,如果不存在,它甚至会触发最小的 JRE 安装),最后但同样重要的是,JavaFX 可以在浏览器中运行,也可以作为纯桌面应用程序运行,而无需更改代码。

            Adobe FLEX 是另一个竞争者,但它缺少“Web Start”位,并且在浏览器和桌面之间轻松迁移时不够灵活。

            无论如何,JavaFX 的功能并不像 FLEX 那样完整,但 1.3 版可以被认为已经准备就绪,您可以使用 Adob​​e Creative Suite 的免费 JavaFX 插件创建整洁的东西(如果您的应用程序将包含任何图形)。

            【讨论】:

              【解决方案7】:

              我们正在寻求做一件非常相似的事情。我们有一个现有的 Java Web 应用程序。我们已经测试了在安装了 Jetty 和 MySql 的桌面系统上运行它。 Chrome 浏览器处于“应用”模式时,它看起来就像一个桌面应用程序。

              我们正在研究这种方法,以实现我们现有成熟在线 Web 应用程序的跨平台 (pc/mac/linux) 离线版本。我想知道是否有人知道类似的项目,或者可以在为桌面应用程序运行应用程序服务器的想法中找出任何漏洞。当然,我们的目标是为服务器和桌面实现提供一个基本的代码库,并在必要时提供受保护的变体。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2015-07-14
                • 2011-05-01
                • 1970-01-01
                • 2020-09-22
                • 2012-02-06
                • 1970-01-01
                相关资源
                最近更新 更多