我可以在同一个项目中使用Scala和Java吗?我是编程新手,所以对我来说有点困惑。
从我的研究中我已经了解到,获得一个好项目的最佳组合是Java / Spring或Scala / Lift的组合。为什么存在这些组合?是不是可以使用Scala with Spring或Java with Lift?
如果我使用Scala,我应该在Scala代码中使用整个配置吗?或者我可以拥有外部资源,因此每次Scala代码都不应该修改。
答案 0 :(得分:6)
问。我可以在同一个项目中使用Scala和Java吗?
当然,你可以。您可以在同一个项目中一起使用大多数基于JVM的语言。
问。我该如何解决?
基本思想是配置构建工具以编译Java和Scala代码。例如,如果您使用Maven,则可以使用Maven Scala plugin来编译Scala代码。使用此插件有两种选择:
我更喜欢选项2,因为我发现Scala编译速度很慢(尽管每个新的Scala版本的性能都在稳步提高),因此使用Maven Compiler插件可以缩短整体构建时间。
问。是否无法将Scala与Spring一起使用或Java与Lift一起使用?
当然,您可以将Scala与Spring和Java一起使用。您可以查看使用Java,Scala和Spring的my sample application。
您会注意到示例应用程序具有用于Java和Scala代码的单独源文件夹,但这不是必需的,可以在Maven配置中进行配置。
问。如果我使用Scala,我是否应该使用Scala代码进行整个配置?
我假设您的意思是Spring配置。您是否希望使用XML文件,Java类或Scala类配置Spring完全取决于您。所有方法都有效。这取决于你更喜欢哪种风格,更喜欢。
您甚至可以将配置分布在多个类甚至XML和类的组合上。
答案 1 :(得分:3)
是
Scala和Java一起工作很好。
Scala主编译目标可以编译为在任何JVM上运行的Java字节码。除了运行时兼容性之外,Scala语言本身也支持互操作性。
所以基本的项目设置看起来像
$stmt = $this->conn->prepare("SELECT salt, encrypted_password FROM users WHERE email = ?");
$stmt->bind_param("s", $email);
if ($stmt->execute()) {
$stmt->bind_result($salt, $encrypted_password);
if($stmt->fetch()) {
// verifying user password
$hash = $this->checkhashSSHA($salt, $password);
// check for password equality
if ($encrypted_password == $hash) {
$user = array();
$user["salt"] = $salt;
$user["encrypted_password"] = $encrypted_password;
// if you want to return all the columns from database
// then add other lines here
// like $user["name"] = $name;
// and make sure you have declared $name in bind_result method
return $user;
}
} else {
return NULL;
}
} else {
return NULL;
}
所有内容绑定在一起取决于您使用的构建系统,即./src
/main
/scala
/java
test
/scala
/java
,sbt
或gradle
都提供了良好的支持。