【猿传奇 | 4】James Gosling:老骥伏枥,志在千里的 Java 之父

自从 1946 年世界上第一台电子计算机问世以来,计算模式的发展经历了三个阶段:集中计算模式、分散计算模式和网络计算模式。互联网的出现,为在网络计算模式下的科学计算和信息处理提供了良好平台。然而,要充分利用网络计算模式的功能与效益,平台的运行环境是个制约因素,就在此时,Java 诞生了。跨平台、通用性、高效性、安全性,让 Java 语言和 Java 技术成为解决这一问题的最佳途径,在 TIOBE 的编程语言排行榜中,Java 语言一直都处于前列,甚至常年霸占第一的位置。 

(最新的 TIOBE 编程语言排行)

当我们谈到一门语言或一款软件,必然会谈到他们背后的创造者和建立者。就像谈到 WPS 就离不开求伯君,谈到 Google 就离不开 Sergey Brin、Larry Page 和 Jeff Dean,谈到中文 DOS 就离不开严援朝一样,当我们谈论 Java 时也会离不开一个名字:James Gosling。

1

James 出生在加拿大的一个村庄里,那已经是 1955 年 5 月的事情了。那时美国的计算机行业也才刚刚起步,那一年 IBM 702 刚刚问世, 庞大的身躯对于当时的世界来说已经是奇迹了,《时代》杂志的原话是:“在短短 12 个机器小时内,大脑将制作 1200 份成本报表,而这一般需要 1800 人才能完成。”

在那时,James 就已经对技术充满了兴趣:12 岁的时候,他用报废的电话机和电视机中的部件做了一台电子游戏机。附近农民的联合收割机出了问题也常常找他修理。14 岁的时候,中学组织到附近大学参观,他记住了大学计算中心的门锁密码,从此开始偷偷地溜进计算中心,学习计算机编程。一年后,大学的天文系招他当了一名临时编程员,编写计算机程序来分析卫星天文数据。

随着时间的推移,James 的天赋也愈发的显露出来,在加拿大的卡尔加里大学拿到理学学士的荣誉学位后,又到了拥有享誉全球的计算机学院的卡耐基梅隆大学攻读计算机科学的硕士和博士学位。

1983 年 1 月,James 获得博士学位后到 IBM 工作,设计 IBM 第一代工作站,但当时 IBM 的领导层并不看重工作站项目。失望之余,James Gosling 跳槽到了 Sun 公司( Sun Microsystems )。他花了五年功夫领导开发的和 OS2 很类似的 Sun NeWs 窗口系统,尽管得到技术界的好评,却未能变成流行的产品。当时他还第一个用 C 语言实现的 EMACS 的所见即所得文本编辑器 COSMACS

2

在当今这个竞争激烈的软件开发时代,软件设计师一直在试图预测未来软件或者技术的发展趋势。在 1990 年,Sun 公司成立了一个软件设计团队,其中除了 James Gosling,还有 Patrick Naughton 和 Mike Sheridan等人,他们合作的项目被称为“绿色计划”。他们认为计算机技术发展的一个趋势是数字家电之间的通讯,为电视、烤箱等家用电器开发一种交互式的软件系统,这种应用需要的是那种小而可靠的系统,它能够移植,并且实时性好,适用于网络分布环境。流行的 C++ 是自然的选择。不过,开发过程中遇到的许多难以克服的困难使他们意识到必须彻底解决问题了。

James列举了很多理由来说明为什么不想使用 C++。比如:很多成员发现 C++ 太复杂以至很多开发者经常错误使用、 C++ 缺少垃圾回收系统、可移植的安全性、分布程序设计、和多线程功能,最后, C++ 不易于移植到各种设备上的平台等等。这些理由确实非常的充分。然而还有一个重要的原因 James 并没有说。那就是 James 本人非常厌恶 C++ 这种非常复杂的语言,所以他从来也没有认真学习过 C++ 语言,没有学好,自然他也就不喜欢用。其实,凡是聪明绝顶的人,反而不喜欢复杂的东西。对于 James 这样聪明绝顶的人来说,不喜欢就不用,实在有需要,那就自己动手自力更生

(Java 就是不带刀枪棍的 C++)

到了 1992 年的夏天,新语言的操作系统、程序语言、类库等已经初具雏形。这样,就要为这种新的语言起一个名字。James 充分发挥想象,取了一个名字叫做:C++ ++ —。是的,你没有看错,它就叫这个名字。James 的意思是:这种语言在C++的基础上,增加了很多新的、好的、有用的功能(++),抛弃了C++中很多旧的、不好的、不实用的功能(–)。从这里就可以看出,James 对 C++ 是多么的厌恶。但除了 James 本人之外,是不可能有第二个人喜欢这个名字的。James 最终被迫屈服,将它命名为 “Oak”(橡树),以他的办公室外的橡树命名。

但是,硬件生产商并未对此产生极大的热情。因为他们认为,在所有人对 Oak 语言还一无所知的情况下,就生产硬件产品的风险实在太大了,所以 Oak 语言也就因为缺乏硬件的支持而无法进入市场,从而被搁置了下来。

1994年底,互联网的蓬勃发展给了 Oak 机会:James Gosling 参加了在硅谷召开的“技术、教育和设计大会”。他报着试一试的心情向与会者演示了 Oak 的功能。他点击了网页上的一个静止的分子结构图标,一条命令通过互联网送到了几百英里外的网站,下载了一段小程序,在本地工作站上开始执行。在几秒钟时间里,原本静止的网页上,一个分子图像以三维动画的方式转了起来。

James Gosling 听到了全场观众的赞叹声。

随着 Oak 语言在互联网上得到迅猛的应用和发展,一个想法在 James 的脑中慢慢的浮现。正如一个默默无闻的小人物,突然变成了一个家喻户晓的大人物时,就会希望自己的名字变得更好听一样。James 希望给这种语言取一个更加好听的名字。这个机会很快就来了,他们发现 Oak 已被一家显卡制造商注册,正好,改名吧。

有关 Java 名称的由来,现在有好几个版本,描述的都相当精彩和有趣。其实 Java 的命名即使是某次灵感的爆发,但也是需要通过多次验证和讨论才确定下来的。Java 名称的真正含义是什么呢?当你看到它的 logo 时,你就会明白。他将 Java 语言比喻成:奉献给世人一杯热气腾腾、芬香四溢的咖啡。咖啡是全球最流行的饮料,James 将Java 语言比喻为一杯咖啡,可见他对 Java 语言是多么的自信。

(Java 的 logo)

不久后,硅谷最大的报纸《圣荷西信使报》在头版刊登了一篇专文,“为什么 Sun 认为一杯热咖啡能让你鼓足精神”。从文章见报开始,负责 Java 市场人员的电话响个不停。不久,全美的主要报刊杂志都刊登了 Java 的报道。

到了 2000 年,Java 已经成为世界上最流行的电脑语言。绿色小组当初设计 Java 是为了面向数字家庭,支持各种家电设备。他们没有想到的是,Java 支持的计算模式,实际上就是互联网的模式。

对于 Java 语言的巨大成功,没有人比 James Gosling 更加谦逊:“我从来没有想到 Java 技术将会这么火。当我的老板问我它将达到多少次下载时,我说 10,000 次。而他认为我太过乐观了。”

3

当 James 领导他的团队,开发出 Java 语言和平台时,Sun 正是一家如日中天的公司,而 Java 也被证明是一项革命性的技术。然而,财务问题最终拖垮了 Sun。

2009 年 4 月 20 日,全球最大的数据库软件商甲骨文公司宣布将以每股 9.50 美元,总计 74 亿美元现金的价格收购 Sun。甲骨文收购 Sun 之后,同时获得了 Java 技术。James 也出任了甲骨文客户软件部门的 CTO。许多人认为甲骨文收购 Sun 是正确的做法,然而对 James 来说,这是完全错误的。

James 开发了 Java,因此外界认为他应当受到尊重。然而 James 表示,他从甲骨文得到的反应是完全相反的。2010 年 4 月,James 在博客中撰文,宣布从甲骨文辞职。他当时表示:“关于我离开的原因,这个问题很难说清。我所能提供的任何准确及诚实的信息都将带来危害,而不是帮助。”他表示,甲骨文藐视 Sun 的关键员工,将 Sun 原本制定项目和战略完全推翻。

“导致我离开甲骨文的原因有很多。我的薪水也是因素之一。当我从他们那里拿到我的薪酬合同时,我试图在 W-2 表格中看看我的薪酬究竟是怎样。然而这让我震惊。他们只是从 Sun 复制了我的基本薪酬。”此前,Sun 的所有副总裁及以上级别管理人员都拥有与绩效挂钩的奖励。

不过这还不是全部的原因。实际上,即使存在这样的困难,James 也决定继续在甲骨文工作。然而根据 James 的说法,他遇到了另一个麻烦,即甲骨文内部没有高级工程师这样的职位,以对应James 原本在 Sun 的级别,他表示:“在我的薪酬合同上,他们大幅下调了我的级别。”

在甲骨文,James 能决定的事情微乎其微。甲骨文是一家极度重视细节管理的公司。因此 James 和 Java 方面的同事无权决定任何事。他们的决策权不复存在。

这导致 James 在甲骨文的工作如同鸡肋。 James 表示:“我的工作看起来就是登上舞台,成为为甲骨文 Java 的代言人。我不适合做这样的工作。”这一问题导致双方的关系最终破裂。 James 表示,甲骨文在道德上带来挑战,而他本人已经受够了,因此决定不再为甲骨文工作,选择了加入谷歌。

在为谷歌工作了半年后, James 收到了前同事,也是他本人好友的 Bill Vass 的邀请,加盟了机器人设计制造公司 Liquid Robotics,担任该公司的首席软件架构师,开发自主驾驶的无人船 Wave Glider。

但是,James 的征程并没有结束,在 2017 年 5 月,已经62岁的 James 宣布加盟亚马逊 AWS,继续他的工程师生涯。生命不息,Coding 不止。本可以颐享天年的 James 看起来并没有想要休息的意思,作为“ Java 之父”,他并没有满足于现在的成就,或许他深谙能力越大,责任越大的道理,或许他真的只是喜欢写代码。

不论如何,James 的经历激励着无数程序员向前方奋进,也许我们没有 James 那样的天赋和聪明才智,但我们至少可以像他那样努力和坚持,在自己前进的道路上奋斗下去。