我想用Java创建一个桌面应用程序。网络技术。选择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& amp; Zimbra沿着类似的路线,但它们似乎连接到互联网以显示数据。我们的软件完全是一个离线桌面应用程序。
答案 0 :(得分:2)
首先,它是可能的。如果您正在寻找示例,请检查http://wiki.eclipse.org/Hudson-ci/Meet_Hudson。 如果你深入研究他们的代码,你可以得到基本的架构。它不使用任何嵌入式数据库。 您说您的应用程序将始终处于脱机状态,在这种情况下,我建议您使用Eclipse插件开发等技术来使用纯桌面应用程序。
如果你已经下定决心,根据我对类似应用的经验,这里有一些可以帮助你的要点,
虽然您的应用程序处于脱机状态(我认为,您的应用程序无需连接任何用户的任何服务器,但用户计算机可以访问Internet),您需要提供更改(例如,更改html或jsp页面)/ bug修复透明到最终用户。 JNLP / Java Web start非常适合这种情况。
如果您要使用JNLP安装方式,您的启动器应该在最终用户计算机上处理嵌入式数据库安装和端口(这是一个很大的问题)。
此外,如果您通过JNLP启动服务器(在我的情况下,Jetty),由于权限问题,您将遇到类加载错误。准备挖掘服务器代码。我很久以前就已经这么做了,现在我没有代码来指出确切的问题。
在安装过程中和应用程序启动期间显示进度条。您的战争部署需要一些时间,用户需要知道应用程序启动正在进行中。你最终会写一些swing UI。
应用程序启动后,在用户系统的默认浏览器中自动启动应用程序的URL。您不需要嵌入式浏览器。请查看http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/desktop_api/。
答案 1 :(得分:1)
是的,有可能。请参阅https://github.com/jreznot/electron-java-app演示。在那里你可以找到一种在Java上构建基于Electron的应用程序的简单方法,无需编译到JS,只需使用Vaadin UI嵌入Jetty实例中的Java应用程序。
答案 2 :(得分:0)
你是对的,如果你是自己开发一个项目,java是很棒的。
服务器端编码可以使用Spring(对于MVC,数据库等......非常丰富和轻量级的框架,易于学习和理解)与hibernate(用于数据库处理的ORM框架,为任何数据库服务器提供方言)。 / p>
对于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等。可以使用。
希望这会有所帮助。
答案 3 :(得分:0)
恕我直言,运行网络服务器只是为了创建一个带有js和ajax的桌面应用程序的想法很糟糕......我听说Apple-creator Titanium允许使用网络技术创建跨平台应用程序。还有其他几个类似的程序。
我认为你最终会更好地为java ui购买一个好的wingwing Swing设计工具,这将花费你几百美元,但会为你节省很多很多开发麻烦。很难相信布置一个漂亮的桌面应用程序比布置网页更复杂。
答案 4 :(得分:0)
我没有得到嵌入式jetty / tomcat部分。您希望桌面应用程序运行与数据库通信的嵌入式服务器吗?那么每个桌面应用程序都会打开数据库连接吗?
为什么没有一个Java桌面应用程序将HTTP请求发送到连接到数据库并处理请求的JavaEE服务器?基本上,Java客户端(可能像开发人员一样丰富)可以替代浏览器。这为您提供了更多的可扩展性等。
我们开发了一种类似(虽然复杂得多)的产品 - 桌面上的Swing + Apache Commons HttpClient。这会将带有序列化二进制数据的HTTP POST请求发送到服务器。 - 在Web容器中运行的调度程序servlet,它在服务器上重新创建Java对象并执行请求。
答案 5 :(得分:0)
我可能会因此而被扔石头,但我建议使用JavaFX。我们已经成功实现了JavaFX应用程序,供大型公司内部使用。优点是软件在服务器端“受控”(因此,没有人会有“旧”版本)。安装工作量很小(Java Web Start会为您修复此问题,如果不存在,它甚至会触发最小的JRE安装),最后但并非最不重要的是,JavaFX可以在浏览器中运行,也可以作为纯桌面应用程序运行,而无需更改代码。
Adobe FLEX是另一个竞争者,但它没有“Web Start”位,并且在浏览器和桌面之间轻松迁移方面不够灵活。
无论如何,JavaFX并不像FLEX那样功能齐全,但1.3版可以被认为是战斗准备就绪,您可以使用Adobe Creative Suite的免费JavaFX插件创建简洁的东西(如果您的应用程序将包含任何图形,那就是)。
答案 6 :(得分:0)
我们希望做一个非常相似的事情。我们有一个现有的Java Web应用程序。我们测试了在安装了Jetty和MySql的桌面系统上运行它。 Chrome浏览器处于“app”模式时,它看起来就像桌面应用程序。
我们正在研究这种方法,以实现现有成熟在线Web应用程序的跨平台(pc / mac / linux)离线版本。我想知道是否有人知道类似的项目,或者可以在为桌面应用程序运行应用程序服务器的想法中挖出任何漏洞。当然,我们的目标是为服务器和桌面实现提供基本上一个代码库,并在必要时提供受保护的变体。