【问题标题】:Weaving Scala into existing Java EE projects?将 Scala 融入现有的 Java EE 项目?
【发布时间】:2011-11-04 17:05:50
【问题描述】:

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

scala.exe 的真正用途是什么?有人可以简要介绍一下 scala.exe 与 java.exe 的不同之处吗?除了提供解释器外壳之外,scala.exe 中是否存在运行时黑魔法?

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

如果我使用 java.exe 启动进程,我可以在 scala 代码中链接到现有的 java 程序吗?如果是这样,我的 CLASSPATH 是否需要更改为链接到 scala 标准库 jar 中?另外,如果我使用 java.exe 启动,是否需要任何新的 -javaagent 参数来链接 scala 代码?有没有办法在我现有的 Web 应用程序 .war 文件(或 WEB-INF/类)中的 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 的专家,我会发现试图将两者混合起来是一团糟,我浪费了我的时间?

【问题讨论】:

  • 什么scala.exe?没有scala.exe
  • 已更新以校正密度

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


【解决方案1】:

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

问题:

scala.exe 的真正用途是什么?有人可以简要介绍一下什么 scala.exe 与 java.exe 有什么不同?是否有运行时黑魔法 在 scala.exe 中除了提供解释器外壳吗?

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

  • 它可以启动解释器外壳
  • 它可以执行 Scala 脚本文件
  • 它可以从类路径执行编译后的 Scala 二进制文件
  • 可以执行jar文件

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

问题:

如果我启动 用 java.exe 处理?如果是这样,我的 CLASSPATH 是否需要更改为链接 在 scala 标准库 jars 中?另外,如果我要启动 java.exe,是在 scala 中链接所需的任何新的 -javaagent 参数 代码?

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

问题:

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

Scala jars 就像 java jars 一样,因此您可以这样对待它们。

问题:

最后,将新的 Scala 代码合并到现有的 Spring 中 框架 + JSF2 Web 应用程序,例如尝试将圆形钉子放入 方孔?我看到一长串为 Scala 设计的 Web 框架 是可用的,但我想知道 Scala 有多流畅或多尴尬 将使用 JSF2 等商品工具。这些是基于 Scala 的吗 Web 框架是非 Java 开发人员迁移到 Scala 社区并希望在 斯卡拉语言?或者,JSF2 的方式是否有内在的东西 设计成这样,一旦我成为 Scala 的专家,我就会看到 试图将两者混合在一起的一团糟,我浪费了我的时间?

在 Scala 中使用 Java 库至少与在 Java 中使用它们一样简单,而且通常更流畅。另一方面,Scala 比 Java 丰富得多。所以当你开始习惯 Scala 的时候,你就会感觉到 Java 库的不足。

【讨论】:

  • 这么简单!我很期待学习 scala,这听起来像是一种优雅的方式,可以通过 JVM 的所有优势超越 Java。
  • 谢谢,我会给你答案复选标记,但我仍然希望听到其他有将 JSF2 和 Spring 与 Scala 混合在一起的天堂/地狱般经历的人。
  • 没有scala.exe,你不应该暗示有这样的事情。有一个scala.bat 和一个scala(Unix shell),它们总是调用java 可执行文件,只是调用不同的类。
  • Daniel:我运行 Linux,所以我没有意识到它是一个 .bat 而不是.exe 文件。我会更新答案。
  • 呃。我想,在写我的问题之前,我应该做更多的研究。如果 scala.bat 是启动器,显然没有黑魔法。文献中描述 scala 脚本的方式,我认为它是一个可执行文件。我故意用附加的 .exe 来表述这个问题,因为我希望这个问题能够被 google 找到,其中具体解决了可执行文件的性质问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-31
  • 1970-01-01
  • 1970-01-01
  • 2011-07-10
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多