简单介绍一下。
首先scala是运行在jvm上的,也就是说scala会被编译为和java编译后的class一样的字节码。这也代表scala和java是可以互相调用并且它们可以联合编译,不过实际上来说scala调用java很容易,而java调用scala会遇到一些问题。
其次scala是一个静态类型的语言,它通过类型推断来隐藏大部分的类型声明信息,让它的语法达到动态类型语言的简洁程度。但因为scala的静态类型特点,它的性能接近原生的java,高出groovy相当多。
再次scala同时提供两种编程范式的支持,OOP和FP,面向对象编程和函数式编程。
scala在java的基础上引进了很多现代高级语言的特性,比如闭包、对DSL的友好支持、trait的混合以及扩展已有类型能力的方法(通过隐式转换)。但也因为scala引入的这些特性,使scala的语法显得独特并且有很多特例,对于刚开始接触scala的人来说,看scala代码经常会看的云里雾里的。
另外scala支持的FP范式和actor模型让scala的高并发编程相对java来说更清晰易读,容易实现。
简单比较
scala | groovy | java | |
语法 | 独特,类动态语言 | 类似java | java |
类型系统 | 静态 | 动态 | 静态 |
性能 | 好 | 差 | 好 |
表达力 | 好 | 好 | 差 |
灵活度 | 较好 | 好 | 差 |
易读 | 差 | 好 | 好 |
个人认为scala是一个很有魅力的语言,如果是只接触过C一族语言(C/C++/Java)的人应该会从scala看到很多新鲜的东西,好的语言让人有去把玩它用它创造东西的欲望。