是否可以使用Java后端和Web技术UI创建桌面应用程序

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

我会告诉你一些我们想要创建的软件。 它将是一个基于桌面的软件,即ERP软件。

关键要求是应该有一个很好的用户界面,它应该是快速的,而不是非常耗费资源。

我听说实现一个很棒的GUI是可能的,但在Java中很难实现。 它可以完成,但很复杂,而在Visual Studio,Microsoft产品中执行相同操作非常简单。

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

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

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

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

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

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

如果你已经下定决心,根据我对类似应用的经验,这里有一些可以帮助你的要点,

  1. 虽然您的应用程序处于脱机状态(我认为,您的应用程序无需连接任何服务器以用于任何用例,但用户计算机可以访问Internet),您需要提供透明的更改(例如,更改html或jsp页面)/错误修复到最终用户。 JNLP / Java Web start非常适合这种情况。

  2. 如果您要使用JNLP安装方式,那么您的启动器应该在最终用户计算机上处​​理嵌入式数据库安装和端口(这比它出现的大问题)。

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

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

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

  6. 我使用MySql作为嵌入式数据库。 检查在java桌面应用程序中嵌入mysql 。 它对我有用,我没有遇到任何问题。

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

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

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

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

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

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

希望这可以帮助。

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

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

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

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

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

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

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

无论如何,JavaFX不像FLEX那样function齐全,但1.3版本可以被认为是战斗准备就绪,您可以使用Adobe Creative Suite的免费JavaFX插件创建简洁的东西(如果您的应用程序将包含任何图形,那就是)。

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

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