繁体   English   中英

如何将旧的Java / J2EE网站移植到现代脚本语言(PHP,Python / Django等)?

[英]How can I port a legacy Java/J2EE website to a modern scripting language (PHP,Python/Django, etc)?

我想将遗留Java Web应用程序(J2EE)移动到脚本语言 - 任何脚本语言 - 以提高编程效率。

最简单的方法是什么? 是否有任何可以转换大量业务逻辑的自动化工具?

这是你必须做的。

首先,一定要在跑步前走路。 构建一些简单的东西,可能与您的主项目相关。

不要构建最终项目的一部分,并希望它“进化”到最终项目中。 这从来都不是很好。 为什么? 你会犯愚蠢的错误。 但你不能删除或重做它们,因为你应该把这个错误演变成最终的项目。

接下来,选择一个框架。 什么? 第二? 是。 第二。 在您实际使用某些脚本语言和框架执行某些操作之前,您对所执行的操作没有真正有用的概念。 一旦你建立了一些东西,你现在就有了明智的意见。

“等等,”你说。 “要做第1步,我必须选择一个框架。” 真正。 但是,第1步包含您可以撤销的决定。 选择错误的框架,步骤1没有长期的不良影响。 这只是学习。

第三,利用您的战略框架和一些经验,将现有网站分解为可以使用新框架构建的部分。 优先考虑从最重要到最不重要的部分。

不要将整个转换计划为一个大型项目。 它永远不会奏效。 它使一项重要工作变得更加复杂。

我们将使用Django作为示例框架。 您将拥有模板,视图函数,模型定义,URL映射和其他详细信息。

对于每个构建,请执行以下操作:

  1. 将现有模型转换为Django模型。 这将永远不适合您的旧SQL。 你必须重新考虑你的模型,修复旧的错误,纠正你一直想纠正的旧错误。

  2. 写单元测试。

  3. 构建转换实用程序以导出旧数据并导入新模型。

  4. 构建Django管理页面以触摸并感受新数据。

  5. 选择代表性页面并将其重新编辑到适当的模板中。 您可以使用一些旧的JSP页面。 但是,不要浪费太多时间。 使用HTML创建Django模板。

  6. 规划您的URL和查看功能。 有时,这些视图函数将利用遗留的操作类。 不要“转换”。 从头开始重写。 使用您的新语言和框架。

唯一值得保留的是数据和操作概念。 不要试图保留或转换代码。 这是误导。 您可以将unittests从JUnit转换为Python unittest。


几个月前我给出了这个建议。 在处理过程中,我不得不做一些指导和审查。 修订后的网站已启动并正在运行。 没有旧技术的转换; 他们从头开始做了建议的重写。 开发者很开心 网站运作良好。

如果您已经在Java中实现了大量业务逻辑,那么我会看到两种可能性。

第一种是使用在JVM中运行的高级语言,并且具有Web框架,例如Groovy / GrailsJRubyRails 这使您可以直接利用您在Java中实现的所有业务逻辑,而无需重新构建整个站点。 您应该能够利用框架在Web开发方面提高的生产力,并仍然利用您现有的业务逻辑。

另一种方法是将业务逻辑层转换为可通过标准RPC机制提供的一组服务 - REST,SOAP,XML-RPC或其他一些简单的XML(YAML或JSON),通过HTTP协议(参见DWR ),以便前端可以对业务逻辑进行这些RPC调用。

第一种方法,在JVM上使用高级语言可能比第二种方法更少重新构建。

如果您的目标是从Java完全迁移,那么这些方法中的任何一种都允许您以较小的步骤执行此操作 - 您可能会发现这种混合比整个销售弃用更好 - JVM有很多库并且集成良好进入很多其他系统。

使用自动化工具“移植”Web应用程序几乎肯定会保证未来的编程效率最小化 - 而不是改进。

一个好的脚本语言可以帮助那些了解该语言中良好编码实践的优秀程序员使用编程效率。 自动化工具通常不是为了输出优雅或编写良好的代码而设计的,只能输出有效的代码。

在努力重新实现Web应用程序之后,您只会提高编程效率 - 由于重新实现所需的时间,可能会或可能不会导致整体改进。

这里给出的很多建议都假设你 - 而且只是你 - 正在完全重写应用程序。 情况可能并非如此,它改变了答案

如果你已经开始使用J2EE,那么正确的答案就是Grails。 它只是:你可能已经有了Hibernate和Spring,并且你希望能够以最小的痛苦在旧代码和新代码之间来回切换。 这正是Groovy的强项,在这方面它甚至比JRuby更顺畅。

此外,如果您已经开始使用J2EE应用程序,那么您已经有了Java开发人员。 在那种情况下,学习Groovy就像从梯子上掉下来 - 字面意思。 除了匿名内部类之外,Groovy是Java的纯超集,这意味着您可以编写Java代码,将其称为Groovy,并完成它。 随着您对Groovy的优势越来越熟悉,您可以将它们集成到Java-ish Groovy代码中。 不久之后,你将编写非常Groovy代码,甚至没有真正实现过渡。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM