将Scala编织到现有的Java EE项目中?

时间:2011-08-26 17:10:37

标签: java spring scala java-ee jsf-2

我对scala有很多疑问。我做了一些阅读和谷歌搜索和SO'ing,没有找到任何可靠的答案。我还没有进入实验/原型设计阶段,所以我想我也可以问我的问题并获得一些专家知识供大家分享。提前谢谢!

scala.exe到底是什么用的?有人能说一下scala.exe与java.exe的不同之处吗?除了提供解释器shell之外,scala.exe中是否存在运行时黑魔法?

UPDATE :没有scala.exe这样的东西.Scala附带了一个简单的批处理脚本启动器,scala.bat(或* nix上的scala)。 Scala运行时是java.exe ,在CLASSPATH中使用Scala的标准库jar。)

如果我使用java.exe启动进程,是否可以将scala代码链接到现有的java程序?如果是这样,我的CLASSPATH是否需要更改为scala标准库jar中的链接?此外,如果我使用java.exe启动,是否需要在scala代码中链接任何新的-javaagent参数?有没有办法在我现有的Web应用程序.war文件(或WEB-INF / classes)中的jar中包含scala代码并让它运行?

相反,如果我的Java EE应用服务器启动器中需要scala.exe来执行scala + java代码,scala.exe可以采用我所有的深奥-XX:InsertYourCrazySunPerfSwitchHere JVM命令行参数吗?

最后,是将新的Scala代码合并到现有的Spring Framework + JSF2 Web应用程序中,例如试图将圆形挂钩插入方孔中?我看到了为Scala设计的很长的Web框架列表,但是我想知道Scala在使用像JSF2这样的商品工具时会有多顺畅或多么尴尬。这些基于Scala的Web框架是非Java开发人员的副产品迁移到Scala社区并希望在Scala语言中重新创建他们的框架吗?或者,JSF2的设计方式是否存在一些内在的东西,一旦我成为Scala的专家,我会发现混合这两者是一个草率的混乱,我浪费了我的时间?

1 个答案:

答案 0 :(得分:4)

你问了很多问题。我将尝试一次解决所有问题。

<强>问题:

  

scala.exe到底是什么用的?有人可以说明什么   scala.exe与java.exe有什么不同?是否有运行时黑魔法   在scala.exe中,而不是提供解释器shell?

scala.bat可以根据参数做几件事:

  • 它可以启动一个解释器shell
  • 它可以执行Scala脚本文件
  • 它可以从类路径
  • 执行已编译的Scala二进制文件
  • 它可以执行jar文件

启动二进制文件时,scala.bat只需调用java.exe,并将scala-library.jar添加到类路径中。没有任何魔法。

<强>问题:

  

如果我启动了,我可以将scala代码链接到现有的java程序   用java.exe进程?如果是这样,我的CLASSPATH是否需要更改为链接   在scala标准库jar中?如果我正在推出   java.exe,是scala中链接所需的任何新的-javaagent参数   码?

所有Scala二进制文件都是简单的jar。唯一的区别是它们需要scala运行时库(scala-library.jar)。因此,当使用java.exe启动时,您只需按照启动带有依赖项的jar时的步骤操作即可。同样,没有魔法,没有额外的开关。

<强>问题:

  

有没有办法在我现有网站的jar中包含scala代码   应用程序.war文件(或在WEB-INF / classes中)并让它运行?

Scala jar就像java jar一样,所以你可以这样对待它们。

<强>问题:

  

最后,将新的Scala代码合并到现有的Spring中   Framework + JSF2 Web应用程序就像试图将一个圆形挂钩装入一个   方孔?我看到了为Scala设计的很长的Web框架列表   那是可用的,但我想知道Scala有多顺利或多么尴尬   会玩JSF2等商品工具。这些是基于Scala的吗?   Web框架非Java开发人员的副产品迁移到   Scala社区,并希望重新创建他们的框架   Scala语言?或者,JSF2的存在方式是什么?   设计成这样,一旦我成为Scala的专家,我就会看到它   试图将两者混合在一起的草率混乱,我浪费了我的时间?

使用Scala中的Java库至少和使用Java中的Java一样简单,而且通常更顺畅。另一方面,Scala比Java更丰富。所以当你开始习惯Scala时,你会觉得缺少Java库。