我想将遗留Java Web应用程序(J2EE)移动到脚本语言 - 任何脚本语言 - 以提高编程效率.
最简单的方法是什么?是否有任何可以转换大量业务逻辑的自动化工具?
这是你必须做的.
首先,一定要在跑步前走路.构建一些简单的东西,可能与您的主项目相关.
不要构建最终项目的一部分,并希望它"进化"到最终项目中.这从来都不是很好.为什么?你会犯愚蠢的错误.但你不能删除或重做它们,因为你应该把这个错误演变成最终的项目.
接下来,选择一个框架.什么?第二?是.第二.在您实际使用某些脚本语言和框架执行某些操作之前,您对所执行的操作没有真正有用的概念.一旦你建立了一些东西,你现在就有了明智的意见.
"等等,"你说."要做第1步,我必须选择一个框架." 真正.但是,第1步包含您可以撤销的决定.选择错误的框架,步骤1没有长期的不良影响.这只是学习.
第三,利用您的战略框架和一些经验,将现有网站分解为可以使用新框架构建的部分.优先考虑从最重要到最不重要的部分.
不要将整个转换计划为一个大型项目.它永远不会奏效.它使一项重要工作变得更加复杂.
我们将使用Django作为示例框架.您将拥有模板,视图函数,模型定义,URL映射和其他详细信息.
对于每个构建,请执行以下操作:
将现有模型转换为Django模型.这将永远不适合您的旧SQL.你必须重新考虑你的模型,修复旧的错误,纠正你一直想纠正的旧错误.
写单元测试.
构建转换实用程序以导出旧数据并导入新模型.
构建Django管理页面以触摸并感受新数据.
选择代表性页面并将其重新编辑到适当的模板中.您可以使用一些旧的JSP页面.但是,不要浪费太多时间.使用HTML创建Django模板.
规划您的URL和查看功能.有时,这些视图函数将利用遗留的操作类.不要"转换".从头开始重写.使用您的新语言和框架.
唯一值得保留的是数据和操作概念.不要试图保留或转换代码.这是误导.您可以将unittests从JUnit转换为Python unittest.
几个月前我给出了这个建议.在处理过程中,我不得不做一些指导和审查.修订后的网站已启动并正在运行.没有旧技术的转换; 他们从头开始做了建议的重写.开发者很开心 网站运作良好.
如果您已经在Java中实现了大量业务逻辑,那么我会看到两种可能性.
第一种是使用在JVM中运行的高级语言,并且具有Web框架,例如Groovy/Grails或JRuby和Rails.这使您可以直接利用您在Java中实现的所有业务逻辑,而无需重新构建整个站点.您应该能够利用框架在Web开发方面提高的生产力,并仍然利用您现有的业务逻辑.
另一种方法是将业务逻辑层转换为可通过标准RPC机制提供的一组服务 - REST,SOAP,XML-RPC或其他一些简单的XML(YAML或JSON),通过HTTP协议(另请参阅DWR),以便前端可以对业务逻辑进行这些RPC调用.
第一种方法,在JVM上使用高级语言可能比第二种方法更少重新构建.
如果您的目标是从Java完全迁移,那么这些方法中的任何一种都允许您以较小的步骤执行此操作 - 您可能会发现这种混合比整个销售弃用更好 - JVM有很多库并且集成良好进入很多其他系统.
使用自动化工具"移植"Web应用程序几乎肯定会保证未来的编程效率最小化 - 而不是改进.
一个好的脚本语言可以帮助那些了解该语言中良好编码实践的优秀程序员使用编程效率.自动化工具通常不是为了输出优雅或编写良好的代码而设计的,只能输出有效的代码.
在努力重新实现Web应用程序之后,您只会提高编程效率 - 由于重新实现所需的时间,可能会或可能不会导致整体改进.