免责声明:当我写一本关于在JVM上进行Polyglot编程的书时,我有偏见(Shameless Plug !!-经验丰富的Java开发人员):)
首先,您只应在确实需要的地方介绍更改!
一个很好的起点是考虑Ola Bini的编程语言金字塔。Ola谈论稳定,动态和领域特定的语言。
Java是一种稳定的语言(静态类型化和托管的),由于各种原因(如果人们感兴趣,我可以稍后再讨论)对于动态层项目(例如Rapid Web Development)或特定于领域的层项目(例如建模)不是理想的选择。企业集成模式域)。如果您有适合这些层次之一的项目,那么这可能是一个很好的起点。
如果替代语言具有基本功能,您也可以考虑在稳定层引入一种新语言来替代Java。例如,Scala比Java更简单,更自然地处理并发。
根据要求,对此有更多要求。WRT Java:
- 重新编译很费力
- 静态类型可能不灵活,并导致较长的重构时间
- 部署是一个繁重的过程
- Java的语法不适合生成DSL
此时,您可能会问自己:“这些层中适合哪种编程挑战?我应该选择哪种语言?”,请记住没有万能的选择,但是我确实有一些评估您的选择时可以考虑的标准。
特定领域
- 构建/持续集成/持续部署
- 开发人员
- 企业集成模式建模
- 业务规则建模
动态
- 快速的Web开发
- 原型制作
- 交互式管理/用户控制台
- 脚本编写
- 测试驱动开发/行为驱动开发
稳定
从一个小的低风险模块(请记住,这些JVM语言经常与现有的Java代码很好地交互)或项目开始。明确说明这将是一个废弃的原型。
确保您已经研究了该语言的编程生命周期和工具方面。您将要确保可以TDD,运行构建工具和持续集成,具有强大的IDE支持以及所有其他因素。对于某些语言,您只需要接受某些工具不存在或非常基础即可。开发人员和工具支持的力量可能超过语言的力量。
确保有一个充满活力的社区,当您遇到困难时可以为您的团队提供帮助。本地用户组对此更好。
确保开发人员接受了初步的语言培训,尤其是如果该语言不是OO风格的语言(移至Clojure并非易事)。
我想就是这样。我个人已经在Java开发中成功地将Groovy,Scala和Clojure与Java结合使用,以完成诸如XML处理,构建快速网站和进行数据处理等任务。