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

2024-10-01 07:23:12 发布

您现在位置:Python中文网/ 问答频道 /正文

为了提高编程效率,我想将遗留的JavaWeb应用程序(J2EE)迁移到脚本语言—任何脚本语言—中。在

最简单的方法是什么?有没有自动工具可以转换大部分业务逻辑?在


Tags: 工具方法应用程序编程逻辑业务脚本语言效率
3条回答

如果您已经用Java实现了大量的业务逻辑,那么我认为您有两种可能。在

第一种方法是使用在JVM中运行并具有web框架的高级语言,例如Groovy/Grails或{a3}和{a4}。这允许您直接利用Java中实现的所有业务逻辑,而不必重新构建整个站点。您应该能够利用框架在web开发方面提高的生产力,同时仍然能够利用现有的业务逻辑。在

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

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

如果您的目标是从Java中完全迁移出去,那么这两种方法中的任何一种都允许您以较小的步骤完成迁移—您可能会发现这种混合方式比整体销售折旧要好—JVM有很多库,并很好地集成到许多其他系统中。在

这是你必须做的。在

首先,确保你能在跑步前步行。建立一些简单的,可能与你的主要项目没有关系的东西。在

不要构建最终项目的一部分,并希望它将“演变”为最终项目。这永远不会成功。为什么?你会犯愚蠢的错误。但是你不能删除或重做它们,因为你应该把错误演变成最终的项目。在

接下来,选择一个框架。什么?第二个?对。第二。除非你真的用一些脚本语言和框架做一些事情,否则你对你正在做的事情没有真正有用的概念。一旦你建立了一些东西,你现在就有了一个明智的意见。在

“等等,”你说为了完成第一步,我必须选择一个框架。但是,步骤1包含了允许您撤销的决策。一步挑错一步没有长远的影响。只是学习而已。在

第三,根据你的战略框架和一些经验,把你现有的网站分解成几个部分,你可以用你的新框架来构建。把这些事情从最重要到最不重要的排序。在

不要将整个转换计划作为一个庞大的项目。它永远不会起作用。它使一项大工作变得比必要的更复杂。在

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

对于每个生成,请执行以下操作:

  1. 将现有模型转换为Django模型。SQL永远不适合你的传统。你必须重新思考你的模型,修正旧的错误,修正你一直想改正的老错误。

  2. 编写单元测试。

  3. 构建一个转换实用程序来导出旧数据并导入到新模型中。

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

  5. 挑选具有代表性的页面,并将其重新制作成适当的模板。您可以使用一些遗留的JSP页面。不过,不要浪费太多时间。使用HTML创建Django模板。

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

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


我几个月前就提出了这个建议。在处理过程中,我不得不做一些指导和复习。修改后的网站正在运行。没有从旧技术转换;他们从头开始重写。开发商高兴。网站运作良好。在

使用自动化工具来“移植”web应用程序几乎可以保证将来的编程效率将被最小化,而不是提高。在

一种好的脚本语言可以帮助编程效率,当优秀的程序员了解该语言的良好编码实践时。自动化工具通常不被设计成输出简洁或写得好的代码,而只输出有效的代码。在

只有在努力重新实现web应用程序之后,才能提高编程效率——由于重新实现所需的时间,这可能会导致总体上的改进,也可能不会。在

相关问题 更多 >