有没有适用于Java桌面应用程序的好框架?

34

我使用Swing开发了许多桌面应用程序,即使是那些集成了Hibernate和Spring的更复杂的应用程序。我发现许多事情都是重复的,应该以方便快捷的方式完成,例如应用程序生命周期、日志记录、警报、授权、表单及其验证。我开始寻找框架。我遇到了已经停止维护几年的Swing应用程序框架。Spring RCP真正满足了我的期望,特别是基于Java Bean模型创建表单,这是我喜欢的,但我意识到它也已经停止了维护。Netbeans RCP不适合我,我使用Eclipse,不想为桌面开发再使用另一个IDE。我对Eclipse RCP并不感到兴奋,我觉得它过于针对Eclipse,我更喜欢一些低耦合的工具,而且学习起来也不是那么直接。

我很惊讶在Java中开发基于桌面的业务应用程序的支持如此之弱。就好像Java只被用于Web环境一样。那么制作这样的应用程序的首选语言是什么呢?如果我想继续使用Java,是否有机会找到类似于Spring RCP的东西(迄今为止我还没有找到)?

6个回答

12

我之前也问过类似的问题,如果您感兴趣可以看看这个链接:Swing桌面开发

我的结论是,对于您的桌面应用程序,没有任何框架能做到像Web应用程序那样。这似乎很荒谬,但是根据我的经验,由于有了众多优秀的Web框架和缺乏桌面框架,开发Web应用程序变得更加容易。

我曾在两个项目中使用Spring-RCP,它非常好用,但现在几乎无法使用,因为它与Spring 2.5绑定。此外,它在64位机器上“感觉”有点慢,并且需要大量内存,这很可能是一个Spring-Swing的问题:https://jira.springsource.org/browse/SPR-9628

我等待过Project Valkyrie,但它似乎已经死了。

我认为你不会找到完全满足需求的东西。http://swingx.java.net/或许可以提供一些GUI小部件,如JXDatePicker。我还推荐使用JGoodies Binding和JGoodies Form,它们都很好用。如果您使用客户端-服务器应用程序,我强烈建议使用Spring-Remoting(例如HTTP Invoker)与Spring-Security。这确实可以使事情变得更简单。

我喜欢使用Swing开发桌面应用程序,但不幸的是,您确实需要“额外付出努力”。客户端-服务器通信、安全性甚至验证只是过去几天似乎过于复杂的许多事例之一(与现代Web框架相比)。此外,您可能会发现,使用Java WebStart自动构建、签名和部署应用程序并不像应该那样容易。

到目前为止,Spring-RCP是我找到的最接近“完整”桌面框架的东西,但它已经死了多年。

祝你好运!


11

请尝试使用Griffon。它基于Groovy语言,受Grails框架启发而来。它运行在JVM上,语言非常友好,适合Java程序员。

引用自网站:

Griffon是一个在JVM中开发桌面应用程序的应用框架,Groovy是首选的语言。受Grails启发,Griffon遵循约定优于配置的范例,配合直观的MVC架构和命令行界面。

...... 该架构非常易于扩展:

Griffon框架可以通过插件进行扩展。您有许多选择,例如可以选择Swingx、Jide和Macwidgets等第三方Swing组件的插件;可以选择DataSource、GSQL、Hibernate等持久性相关的插件;可以通过JOGL、LWJGL和Processing实现3D图形和动画支持,还有更多其他的插件选项!


10

这主要取决于应用程序的大小。

对于较小和中等规模的应用程序,使用不需要使用其他语言的JavaFX 2是有意义的,您可以从一些基本的教程开始。

正如您所提到的,在企业级应用程序中,Eclipse RCPNetbeans RCP是一个不错的选择。

开发上而言,Netbeans RCP更简单,您不应该仅因为IDE偏好而忽略它。有一本免费的介绍了如何入门。

还有e4选项,它应该是Eclipse的重大改进,但我还没有使用过。

值得一提的相关资源包括:
http://netbeans.dzone.com/why-from-eclipse-rcp-to-netbeans-platform
Netbeans RCP vs Eclipse RCP


5

看看JGoodies。不仅外观和感觉更好,他们还提供了一个框架来设计Swing应用程序。

当涉及到桌面应用程序时,最大的问题是它真的取决于你想设计什么。与网页应用程序不同,网页->请求->网页,桌面应用程序几乎可以做任何事情。对于业务应用程序,甚至没有标准的生命周期。这非常类似于AJAX而不是你正常的Java EE或PHP webapp。有多少AJAX库实际上提供了除调用和更新特定组件之外的框架。

您可以更新菜单、按钮、面板,在线渲染图形,数据更新等等。

如果您只是寻找表单,则JGoodies可能是您最佳的选择。


你是指他们的免费库还是商业产品? - polmarex
根据您的具体需求,可以选择两者或其中任意一种。 - Stephane Grenier

1

我不知道有任何类似的框架,但是Netbeans提供了一个拖放向导来创建Swing组件。Eclipse也有类似的插件,但它是基于Netbeans插件的。


1
我发现很多事情都是重复的,应该快速且方便地完成,比如应用程序生命周期、日志记录、警报、授权、表单及其验证等。我建议将它们提取到您的个人"Core"库中,您可以在所有项目中共享和使用它。由于您已经实现了所说的内容,应该更容易将它们泛化而不是学习一个全新的框架。也许,可以创建一个私有的Maven项目?
开发重点正在转向Web和移动端,因此我们不应该期望框架供应商会为桌面端做出任何重大努力。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接