Java关闭后的Scala优势

随着闭包被添加到Java,Scala比Java作为语言选择的优势是什么?

有人可以详细说明任何优势吗?

除了闭包(Java看起来并不是那么接近)之外,这里是Java中缺少的Scala中的function列表。 我将在这里省略库,并专注于语言本身的function。 这无论如何都不全面,但我认为它包含大件物品。

  • 隐含参数/转换
  • 模式匹配,案例类
  • 类型推理(一些)
  • 高级类型 (类型构造函数的抽象)
  • Monadic for理解
  • 方差注释
  • 与行为(特征)的接口
  • 默认和命名参数
  • 统一方法和运算符(方法可以用作中缀运算符,运算符可以重载,因为它们只是方法)
  • 统一类型层次; 没有原始类型
  • 属性而不是getter和setter
  • 抽象的价值观
  • 一等不可变引用( val s很容易声明为var s)
  • 按名称(懒惰)术语(也许Java闭包会使这个相当容易表达)
  • 一些尾调用递归优化
  • 抽象类型
  • 键入别名
  • 自我类型
  • 路径依赖类型
  • 结构类型
  • 类型归属 ,与类型转换不同
  • 重命名导入
  • 一流的模块(对象)
  • 一流的套餐
  • 具体化的仿制品( 清单 )
  • 定界延续

这些构建块支持的一些很酷的辅助构造:

  • 类型类(通过隐式参数和更高级的类型)
  • “ 皮条客我的图书馆”模式(通过隐式转换)
  • 内部DSL(通过运算符重载和中缀方法)
  • 解析器组合器(由高阶函数启用并通过中缀方法实现)
  • 生成器,协同程序,自定义控制结构(通过分隔的延续)
  • 类型级编程(通过更高级和抽象类型)
  • dependency injection框架的过时(通过Cake Pattern )

最后,我会提到Scala有一个REPL(读取 – 评估 – 打印 – 循环) – 这不是语言本身的一个特性,但它非常好!

即使Java 7 [8,..]有一天会有一流的function,它仍然缺乏implicits,类型推断,强大的Collections库,模式匹配,特性和许多其他提高生产力的东西。 不是谈论各种Actor库,丰富的构建DSL的能力,……

我听到的最新消息是闭包不会进入Java 7。

http://www.baptiste-wicht.com/2010/09/jdk-7-features-updated-plan-b-is-apparently-here/

http://openjdk.java.net/projects/jdk7/features/

第二个链接清楚地将项目Lambda(闭包)列为推迟到JDK 8。