写点什么

跟上 Scala 的脚步

  • 2007 年 8 月 24 日
  • 本文字数:1429 字

    阅读完需:约 5 分钟

Scala 编程语言近来抓住了很多开发者的眼球。如果你粗略浏览 Scala 的网站,你会觉得Scala 是一种纯粹的面向对象编程语言,而又无缝地结合了命令式和函数式的编程风格。 Christopher Diggins 认为:

不太久之前编程语言还可以毫无疑义地归类成“命令式”或者“函数式”。Scala 代表了一个新的语言品种,它抹平了这些人为划分的界限。

根据 David Rupp 在博客中的说法,Scala 可能是下下一代Java 。这么高的评价让人不禁想看看它到底是什么东西。

Scala 有几项关键特性表明了它的面向对象的本质。例如,Scala 中的每个值都是一个对象,包括基本数据类型(即布尔值、数字等)在内,连函数也是对象。另外,类可以被子类化,而且 Scala 还提供了基于 mixin 的组合(mixin-based composition)

与只支持单继承的语言相比,Scala 具有更广泛意义上的类重用。Scala 允许定义新类的时候重用“一个类中新增的成员定义(即相较于其父类的差异之处)”。Scala 称之为 mixin 类组合。

Scala 还包含了若干函数式语言的关键概念,包括高阶函数(Higher-Order Function)、局部套用(Currying)、嵌套函数(Nested Function)、序列解读(Sequence Comprehensions)等等。

Scala 是静态类型的,这就允许它提供泛型类、内部类、甚至多态方法(Polymorphic Method)。另外值得一提的是,Scala 被特意设计成能够与 Java.NET互操作。Scala 当前版本还不能在.NET 上运行(虽然上一版可以-_-b),但按照计划将来可以在.NET 上运行。

Scala 可以与 Java 互操作。它用 scalac 这个编译器把源文件编译成 Java 的 class 文件(即在 JVM 上运行的字节码)。你可以从 Scala 中调用所有的 Java 类库,也同样可以从 Java 应用程序中调用 Scala 的代码。用 David Rupp 的话来说,

它也可以访问现存的数之不尽的 Java 类库,这让(潜在地)迁移到 Scala 更加容易。

这让 Scala 得以使用为 Java1.4、5.0 或者 6.0 编写的巨量的 Java 类库和框架,Scala 会经常性地针对这几个版本的 Java 进行测试。Scala 可能也可以在更早版本的 Java 上运行,但没有经过正式的测试。Scala 以 BSD 许可发布,并且数年前就已经被认为相当稳定了。

说了这么多,我们还没有回答一个问题:“为什么我要使用 Scala?”Scala 的设计始终贯穿着一个理念:

创造一种更好地支持组件的语言。(《The Scala Programming Language》,Donna Malayeri)

也就是说软件应该由可重用的部件构造而成。Scala 旨在提供一种编程语言,能够统一和一般化分别来自面向对象和函数式两种不同风格的关键概念。

藉着这个目标与设计,Scala 得以提供一些出众的特性,包括:

  • 面向对象风格
  • 函数式风格
  • 更高层的并发模型 > Scala 把 Erlang 风格的基于 actor 的并发带进了 JVM。开发者现在可以利用 Scala 的 actor 模型在 JVM 上设计具伸缩性的并发应用程序,它会自动获得多核心处理器带来的优势,而不必依照复杂的 Java 线程模型来编写程序。
  • 轻量级的函数语法
  • 与 XML 集成
    • 可在 Scala 程序中直接书写 XML
    • 可将 XML 转换成 Scala 类
  • 与 Java 无缝地互操作

Scala 的风格和特性已经吸引了大量的开发者,比如 Debasish Ghosh 就觉得:

我已经把玩了 Scala 好一阵子,可以说我绝对享受这个语言的创新之处。

总而言之,Scala 是一种函数式面向对象语言,它融汇了许多前所未有的特性,而同时又运行于 JVM 之上。随着开发者对 Scala 的兴趣日增,以及越来越多的工具支持,无疑Scala 语言将成为你手上一件必不可少的工具。

查看英文原文: Catching Up with Scala

2007 年 8 月 24 日 11:415420
用户头像

发布了 225 篇内容, 共 52.4 次阅读, 收获喜欢 38 次。

关注

评论

发布
暂无评论
发现更多内容

三面腾讯,已拿offer!分享复习经验和后台开发面经

Java 程序员 后端

为了面试阿里巴巴、腾讯、字节跳动,linux内核架构

Java 程序员 后端

三面遭阿里新微服务框架暴锤,含恨吃透这份手抄本笔记,终入阿里(1)

Java 程序员 后端

三面遭阿里新微服务框架暴锤,含恨吃透这份手抄本笔记,终入阿里

Java 程序员 后端

不到30岁开上兰博基尼的程序员,为什么这么强,他告诉我只需要把多线程搞好你也行

Java 程序员 后端

五分钟!搞懂 MySQL主从复制原理,还不会算我输

Java 程序员 后端

三面蚂蚁金服终获 java高岗 offer,却直言再也不想体验第二次了

Java 程序员 后端

不是吧阿sir,你这Redis太熟了吧,震惊面试官第六年

Java 程序员 后端

为什么我不建议你用阿里巴巴Java规范,而使用 Google Guava 编程?

Java 程序员 后端

主动学习微服务架构深度解析:微服务的采用前提,微服务使用场景

Java 程序员 后端

二、docker 镜像容器常用操作(让我们用docker 溜得飞起)

Java 程序员 后端

云服务器下centos7,nginx面试题

Java 程序员 后端

五位阿里大牛联手撰写的《深入浅出Java多线程》

Java 程序员 后端

【Flutter 专题】22 图解 PopupMenu 那些事儿

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 11月日更

三、Spring Cloud之软负载均衡 Ribbon,mysql架构

Java 程序员 后端

上线半天下载量破100W!美团大佬的Java性能调优实战手册,超详细

Java 程序员 后端

上线半天下载量破100W!阿里内部微服务进阶笔记,超详细

Java 程序员 后端

两年JAVA程序员的面试总结,mysql索引原理

Java 程序员 后端

为什么不想做Java了, 现在Java面试怎么这么难,从自身找原因

Java 程序员 后端

为什么不想做Java了,6年经验去面试10分钟结束,现在Java面试怎么这么难

Java 程序员 后端

架构实战营模块二作业

孙志强

架构实战营

五分钟搞懂spring-cloud-square,linux服务器开发需要的技术

Java 程序员 后端

五、redis配置信息以及常用命令,java语言程序设计基础篇第十一版pdf

Java 程序员 后端

不错,这么好的东西不白嫖也太可惜了!阿里内部首发

Java 程序员 后端

三面阿里云斩获offer:微服务+Redis,积累总结

Java 程序员 后端

不会吧不会吧?字节“百万级,nginx视频教程吾爱破解

Java 程序员 后端

不是吧阿sir,你这多线程并发也太熟了吧,震惊面试官第四年

Java 程序员 后端

不是吧,就因为他和面试官多聊了半个小时红黑树,进了腾讯

Java 程序员 后端

不要再本地启动项目调试了,试SpringBoot远程调试你会发现新大陆!

Java 程序员 后端

世界顶级SQL技术专家呕心沥血半年才整理出这份:SQL优化核心思想笔记,手慢无

Java 程序员 后端

为什么一个还没毕业的大学生能够把 IO 讲的这么好?

Java 程序员 后端

跟上Scala的脚步_Java_Scott Delap_InfoQ精选文章