面向Java开发人员的Scala指南 - 面向对象的函数编程 - oop.com.cn_面向对象设计 - 面向对象技术开发

面向对象技术开发

会员投稿 投稿指南 站长资讯通告:
您的位置: 首页 > 面向对象 > 正文

面向Java开发人员的Scala指南 - 面向对象的函数编程

来源: www.bianceng.cn 阅读:

在历史上,Java™ 平台一直属于面向对象编程的领域,但是现在,甚至 Java 语言的坚定支持者也开始注意应用程序开发中的一种新趋势:函数编程。在这个新的系列中,Ted Neward 介绍了 Scala,一种针对 JVM 将函数和面向对象技术组合在一起的编程语言。在本文中,Ted 将举例说明您为何应该花时间学习 Scala(例如并发),并介绍如何快速从中受益。

您永远不会忘记您的初恋!

对于我来说,她的名字是 Tabinda (Bindi) Khan。那是一段愉快的少年时光,准确地说是在七年级。她很美丽、聪明,而最好的是,她常常因我的笨拙的笑话而乐不可支。在七年级和八年级的时间里,我们经常 “出去走走”(那时我们是这么说的)。但到了九年级,我们分开了,文雅一点的说法是,她厌倦了连续两年听到同样的笨拙的男孩笑话。我永远都不会忘记她(特别是因为我们在高中毕业 10 周年聚会时再次相遇);但更重要的是,我将永远不会失去这些珍贵的(也许有点言过其实)回忆。

Java 编程和面向对象是许多程序员的 “初恋”,我们对待它就像对待 Bindi 一样尊重和完全的爱慕。一些开发人员会告诉您 Java 将他们从内存管理和 C++ 的炼狱中解救出来了。其他一些人会告诉您 Java 编程使他们摆脱了对过程性编程的绝望。甚至对于一些开发人员来说,Java 代码中的面向对象编程就是 “他们做事情的方式”。(嘿嘿,如果这对我爸爸,以及爷爷有用该多好!)

然而,时间最终会冲淡所有对初恋的记忆,生活仍然在继续。感情已经变了,故事中的主角也成熟了(并且学会了一些新笑话)。但最重要的是,我们周围的世界变了。许多 Java 开发人员意识到尽管我们深爱 Java 编程,但也应该抓住开发领域中的新机会,并了解如何利用它们。

我将始终爱着你 ……

在最近五年中,对 Java 语言的不满情绪逐渐增多。尽管一些人可能认为 Ruby on Rails 的发展是主要因素,但是我要争辩的是,RoR(被称为 Ruby 专家)只是结果,而非原因。或者,可以更准确地说,Java 开发人员使用 Ruby 有着更深刻、更隐伏的原因。

简单地说,Java 编程略显老态了。

或者,更准确地说,Java 语言 略显老态了。

考虑一下:当 Java 语言最初诞生时,Clinton(第一位)在办公室中,很少有人使用 Internet,这主要是因为拨号是在家里使用网络的惟一方式。博客还没有发明出来,每个人相信继承是重用的基本方法。我们还相信,对象是为对世界进行建模的最好方法,摩尔定律将永远统治着世界。

实际上,摩尔定律引起了行业内许多人的特别关注。自 2002/2003 年以来,微处理器技术的发展使得具有多个 “内核” 的 CPU 得以创造出来:本质上是一个芯片内具有多个 CPU。这违背了摩尔定律,摩尔定律认为 CPU 速度将每隔 18 个月翻一倍。在两个 CPU 上同时执行多线程环境,而不是在单个 CPU 上执行标准循环周期,这意味着代码必须具有牢固的线程安全性,才能存活下来。

学术界已经展开了围绕此问题的许多研究,导致了过多新语言的出现。关键问题在于许多语言建立在自己的虚拟机或解释器上,所以它们代表(就像 Ruby 一样)到新平台的转换。并发冲突是真正的问题所在,一些新语言提供了强大的解决方案,太多的公司和企业对 10 年前从 C++ 到 Java 平台的迁移仍记忆犹新。许多公司都不愿意冒迁移到新平台的风险。事实上,许多公司对上一次迁移到 Java 平台仍心有余悸。

了解 Scala。

一种可伸缩语言

Scala 是一种函数对象混合的语言,具有一些强大的优点:

首先,Scala 可编译为 Java 字节码,这意味着它在 JVM 上运行。除了允许继续利用丰富的 Java 开源生态系统之外,Scala 还可以集成到现有的 IT 环境中,无需进行迁移。

其次,Scala 基于 Haskell 和 ML 的函数原则,大量借鉴了 Java 程序员钟爱的面向对象概念。因此,它可以将两个领域的优势混合在一起,从而提供了显著的优点,而且不会失去我们一直依赖的熟悉的技术。

最后,Scala 由 Martin Odersky 开发,他可能是 Java 社区中研究 Pizza 和 GJ 语言的最著名的人,GJ 是 Java 5 泛型的工作原型。而且,它给人一种 “严肃” 的感觉;该语言并不是一时兴起而创建的,它也不会以同样的方式被抛弃。

Scala 的名称表明,它还是一种高度可伸缩 的语言。我将在本系列的后续文章中介绍有关这一特性的更多信息。

Tags:
相关文章列表:
热门排行