Java Scala的好处是什么?
我是一名Java开发人员,我想知道如何在Java程序中使用Scala?阅读Scala。使用Scala,您可以保持:Java Scala的好处是什么?,java,scala,Java,Scala,我是一名Java开发人员,我想知道如何在Java程序中使用Scala?阅读Scala。使用Scala,您可以保持: 所有Java库 在JVM上运行的所有优点(普遍性、管理工具、评测、垃圾收集等) 但您可以编写Scala代码: 比Java更简洁、更清晰(特别是使用更多功能性样式,如在集合库中) 它作为语言的一部分具有闭包和函数 它有操作符重载(从使用角度看) 它有mixin(即包含实现的接口) 我不确定您是否可以在Java程序中轻松使用Scala,如“从Java类调用Scala类” 您可以根
- 所有Java库
- 在JVM上运行的所有优点(普遍性、管理工具、评测、垃圾收集等)
- 比Java更简洁、更清晰(特别是使用更多功能性样式,如在集合库中)
- 它作为语言的一部分具有闭包和函数
- 它有操作符重载(从使用角度看)
- 它有mixin(即包含实现的接口)
相关摘录: 问题是Java和Scala编译步骤是分开的:不能一次编译Java和Scala文件。
如果没有任何Java文件引用任何Scala类,则可以先编译所有Java类,然后再编译Scala类。
或者,如果您的Scala文件中没有引用任何Java类,您可以用另一种方法来实现。
但是,如果您希望Java类能够访问Scala类,并且Scala类能够访问Java类,那么这就是一个问题 Scala代码可以轻松地直接调用到Java代码中,但有时从Java代码中调用Scala代码更为棘手,因为从Scala到字节码的转换并不像Java那样简单:
有时,Scala编译器会向符号添加字符或进行其他更改,这些更改在从Java调用时必须显式处理。
但是Scala类可以实现Java接口,并且该类的实例可以传递给需要该接口实例的Java方法。
然后,Java类调用该实例上的接口方法,就像它是Java类实例一样
当然,相反的情况是可能的,如中所述。另外,请查看Scala网站上最近发布的这条新闻: “” 在他的论文中,描述了他如何使用眼动跟踪研究编程风格的两个方面。他发现,与Java的迭代while循环相比,理解用于理解和映射(如Scala)的算法平均要快30% 还有一条新闻的关键引语: 亚历克斯·麦奎尔(Alex McGuire)在Scala中为电力交易公司编写任务关键型项目,他谈到Scala时说“简洁意味着我可以在一个屏幕上看到更多的节目。你可以得到一个更好的概述。当我有一些数学模型要用Java编写时,我必须在头脑中保留两个模型,一个是数学模型本身,另一个是如何用Java实现它的模型。有了Scala one模型,数学模型就可以了。生产效率更高。”
您可以阅读文章的其余部分和其他链接项。2019年更新 根据我有限的经验,我可以用通俗易懂的语言说出一些简单的观点:
int[]
与List
或List
相比是多余的和令人困惑的。更糟糕的是,在Java中,List
有很多运行时开销,因此许多开发人员必须知道如何使用int[]
。Scala避免了这个问题。此外,在Java/C#中,数组支持(协变)强制转换,这是一个错误,由于遗留问题,它们现在无法修复val
是一种基本的语言功能var
局部变量类型推断,并在发布版本预览模式下具有多行字符串和开关表达式implicits
这样的特性本质上是令人困惑的