将2层Java应用程序迁移到......?

时间:2010-09-05 17:51:01

标签: java swing ria rich-internet-application

我们目前有一个位于MS SQL Server 2005之上的2层Java Swing应用程序。所有业务逻辑都在数据库中。客户端很老(而且不是很友好),出于性能和可伸缩性的原因,我们已经开始将一些服务移植到Java中间层。

但是,我们仍有许多短期和长期目标:

为新的前端选择技术堆栈

这并不容易 - 我可以看到从连续体一端的Web应用程序到另一端的传统桌面应用程序的所有内容都是可行的选择。当前的前端并不是很复杂(主要是基于表单的),所以我可以看到web / AJAX适合,但这是一个我们不知道我们不知道的区域。

我名单上的堆栈是:

  • Eclipse RCP,Netbeans RCP
  • Flex / Flash,Silverlight,JavaFX
  • Pure Javascript frontends(Sprout Core,Javascript MVC,...)
  • 基于Java的Web框架(Wicket,JSF,...)

找到一种使当前应用程序在远程情况下可以接受的方法

我们有一些客户将我们的应用程序转售给较小的客户,并且需要能够远程部署它。由于当前体系结构的2层特性,这会导致可怕的性能(例如,调用返回18个结果集的存储过程)。我们过去曾使用Citrix解决方案,但没有人喜欢这种方法。通过端口80隧道化JDBC也听起来不错。我开始怀疑是否有任何东西可以使用类似X-Windows的方法来远程控制GUI部分。

6 个答案:

答案 0 :(得分:2)

如果您想轻松重新部署应用程序,更新,安全原因等,如果您希望远程访问您的应用程序,您应该考虑使用基于Web的前端。

另外,这样,只有一个应用程序,即您的Web应用程序,将处理与数据库的连接,因此没有JDBC隧道或其他任何内容。

关于最佳框架,它取决于您的团队知识,您的应用程序的使用方式(或多或少的javascript)等。

答案 1 :(得分:2)

为了简化开发并利用您在Swing中的体验考虑使用Vaadin作为您的前端。它是一个Java框架,用于构建看起来很棒且性能良好的现代Web应用程序。所有代码都是用Java编写的,看起来与Swing非常相似。

就整体应用程序架构而言,我会建议多层,面向服务的架构。最好的方法是使用 Spring框架和Hibernate进行数据库访问

答案 2 :(得分:2)

我们刚刚迁移旧版应用程序时,我们刚刚经历了一个非常相似的评估过程。

对于我们来说,使用前端框架的最大决定因素是开发团队的先前知识。我们希望每个人都能立即感到满意。我们有几个与X或Y一起工作的高级开发人员,但每个人都知道的框架是Swing。

最后,我们决定在NetBeans平台上使用RESTful webservice与EE服务器进行通信。

作为奖励,您可以将NetBeans平台应用程序部署为Java WebStart应用程序,这意味着您可以获得不必担心单个安装的好处。

答案 3 :(得分:1)

如果前端主要是基于形式的,我会远离Flex。 Flex非常适合某些应用程序(我将它用于基于画布的应用程序),但Flex的表单组件具有一些可用性问题。他们只是不像你期望的今天网络那样工作。 (比如缺少对鼠标滚轮的支持,输入下拉列表只考虑第一个字符等。)

答案 4 :(得分:1)

假设您要强制所有客户端安装新的中间层,我不能想到反对使其成为Java Web应用程序的争论。如前所述,您可以通过HTTP控制对平台的所有访问,这样可以轻松转售,只需使用防火墙配置即可。您无法在Web前端中使用Javascript,您可能对DWR感兴趣,它允许您通过Javascript直接与Java对象进行交互。我以前用过这个来为Spring MVC webapp添加一些简单的Ajax交互。

我喜欢这种方法的原因,你已经将代码迁移到Java中间层,所以

  1. 已经在客户端上施加Java服务器硬件成本,托管应用服务器/ Web服务器具有可比性
  2. 已经拥有Java专业知识,可以与DWR一起使用
  3. 可以使用尽可能多的/小Javascript(我已经使用DWR与IE6,Firefox 3,Chrome)
  4. 我认为你应该警惕向客户推送太多功能,我会尽可能地减少客户端。我看看前两个堆栈选择的唯一原因是,如果您在某个特定领域拥有一些开发人员专业知识,而不是Java webapp / Javascript。

答案 5 :(得分:1)

我建议创建一个候选框架的简短列表,并创建一个包含所有候选框架的小型测试应用程序。通过这种方式,您可以从所有这些方面了解好的和坏的方面,并了解每个项目的社区活动和文档是什么样的(这些方面存在很多差异)。

如果你最终这样做,我希望你能将Vaadin列入你的短名单,我认为它非常适合你。如果您有任何问题,请访问我们的forums,我们会帮助您开始使用。