使用或不使用Scala用于新的Java项目?

时间:2009-11-14 12:18:42

标签: java programming-languages scala

我对Twitter印象深刻并且正在调查将Scala用于Hibernate和Wicket的新大型Web项目。您如何看待Scala,我应该使用它而不是Java吗?

编辑:而且,您认为Google的Noop,Fan或Scala可以在不久的将来取得Java的领导地位,您认为哪一个有机会?

6 个答案:

答案 0 :(得分:13)

不要忘记您可以将它与Java一起使用。即,您可以在Scala脚本环境中使用已编译的.classes和.jars。

因此,您可能希望使用Java对解决方案的较低级别进行编码,然后将其包装在Scala中,以提供更灵活,更灵活的解决方案(在更高级别重写业务逻辑方面)。

需要考虑的是,还有谁会照顾并维护它。对于所有Scala的炒作,相对较少的人可以编写代码(截至2009年11月),并且您可能不得不雇用未来的人来照顾它。寻找Scala的人会意味着你正在寻找一个小得多的候选人(有些人可能希望在工作中学习 Scala,但仍然有启动成本)

答案 1 :(得分:6)

以下是Scala相对于Java恕我直言的利弊:

优点:

  • 现代Java代码中常见的习语的更简洁的语法
  • 闭包
  • 更强大的类型系统,包括mixins
  • 模式匹配
  • 很棒的REPL,2.8甚至可以使用制表符

总结:使用比Java少得多的代码可以获得更多功能

缺点:

  • IDE支持仍具有alpha或beta质量,尽管IDEA目前拥有最佳支持
  • 标准库不能免除每个新版本的更改(2.8将有向后不兼容的更改)
  • 标准库至少在一年前(当我在JSON支持中找到一个)时出现了重大错误。

我认为Scala将在6-8个月内为主要生产用途做好准备,但我今天不打赌我的项目。

答案 2 :(得分:5)

Don'忘记它是一个相对较小的Twitter,特别是消息队列,用Scala编写。据我所知,前端仍然是Ruby-on-Rails。

那就是说,我在一年前迁移到斯卡拉:我没有回头。此外:

  • 有很多毕业生对斯卡拉商店工作非常感兴趣
  • scala构建为在JVM上运行这一事实意味着Java开发人员在语言中占据先机(如果您感兴趣我可以扩展为什么会这样)。

答案 3 :(得分:3)

Scala的一个特殊问题是,作为可伸缩语言,它具有与普通开发人员不同程度可访问性的功能级别。将它作为JVM的脚本语言使用是一回事,使用函数式编程开发特定于域的语言是另一回事。

答案 4 :(得分:3)

如果您考虑在单个项目环境中使用Java和Scala,我建议使用Maven作为项目依赖系统。这是我用来生成scala项目的代码:

mvn archetype:generate -DarchetypeCatalog=http://scala-tools.org/

以下是与Scala一起使用maven的一些usage information。如果使用maven作为编译器,则可以将java和Scala源文件放在同一个包中,而无需额外配置。它只是有效。

由LinkedIn主持的

Here is a talk。它是一个带Scala,Twitter和Scala电梯网络框架的面板(我使用它)。如果你还在决定是否使用Scala id建议观看它。

答案 5 :(得分:3)

Scala的一个优点是您可以在同一个项目中与Java一起构建它。 Maven(参见luigi-prog的评论)和simple build tool都有相当简单的钩子,可以一次性构建所有内容。

另一种方法是采用现有的单元测试,切换实现,看看差异。

Daniel Spiewak had a few nice entries on the gotchas of Java-Scala interop

在过去的一年里,我一直在工作场所使用Scala,而且我认为这是一个相当熟练的3个月学习曲线。这是一组相当小的典型的 Java人。在惯例和标准方面存在很多波动性,因此期望每隔几个月对任何项目进行一些修改。

我认为你还不能搜索“Scala程序员”。但是你可以找到许多有兴趣学习Scala的Java程序员。

如果我猜测,Scala和Clojure可能会成为'取代'Java的先行者。我不希望最早在2012年之前发生重大转变。 Scala可能引领势头 - 现在有多种语言的书籍。