James Gosling:Java、开源以及Web服务

日期: 2007-12-30 作者:Rich Seeley 来源:TechTarget中国 英文

现在,已经有成千上万的Java程序员了,但是,曾经有那么一个时期,全世界只有一个Java程序员,James Gosling先生。他完成了Java程序设计语言的原始设计,并且开发了原始的Java编译器和虚拟机。目前,Gostling先生是Sun微系统公司的副总裁,他仍致力于软件开发,并发挥着重要的作用,尤其是在NetBeans方面。近日,Gosling先生在接受SearchSOA站点的采访时,谈论了他现在所从事的工作,以及他对Java未来、开放源代码、网络、Web服务以及复杂性与简单性问题的见解。


  让我们开始吧,您现在在哪个部门工作呢?您目前在Sun公司所做的工作是什么呢?



James Gosling说:我们一直努力尝试着使人们能够更好的相互协作。我们注意到了分组——在某种程度上说,分组也是一种隔离。我们一直致力于使那些从事Java SE和NetBeans开发的程序人员能够更好的相互协作。在过去的两年内,我们的努力已经使这一状况有了很大的改善。


  有些Java程序员非常推崇Ruby on Rails,而且,他们争辩说Ruby的强项在于,相对团队开发而言,它能够更好的支持个人独立开发。您认为,团队开发优于独立开发呢,还是相反?


  Gosling说:哦,一个单独的开发人员恐怕无法很好地把握。最初的时候,确实也有单独的程序员独立开发Java。在Java刚刚出现的前四年,只有我一个人独自工作。然后,Java越来越流行,无限的需求使Java变得非常火。大约就在那个时期,我患了非常严重的腕管综合症,有三四年我完全不能打字,但是,这并没有阻止Java的迅速发展。就在那时,Java的使用迅速发展,人们使用Java的“天赋”不断增加。那些把大部分精力放在Java上的开发人员都是真正的聪明人,而这些人的队伍是非常庞大的。人们不断地使用Java,它的发展相当惊人。


  那么,可以这么说,相对于您是世界上唯一的Java程序员这个时期,当您身处Java 社团组织中时,您感到更加舒服,是么?


  Gosling说:都有一点吧。我要自己完成所有这些事情是完全不可能的。在Java的世界中,有太多相当棒的内容。这么说吧,当你独自使用Java时,你完全能够在10分钟内做出大范围的改动,以及相当有影响力的决策。但是,如果你已经拥有了很多用户,那么,无论怎么样,你都不会很快的做出改动或者决策。这个时候,你已经变得极其小心了。我的意思是,你有能力做出非常大的改动,然后再从头开始,但是,一旦你拥有了用户基础,你就必须真正地尊重他们。另外,我当然不是世界上最聪明的人,有很多领域我从未涉及,所以,我并不是一个全能专家。有那么一两个领域,我能够确切地了解,我在这个领域中所做的工作是什么,但是,我认为能够激励其他人并使他们发挥主动性,这才具有极大的价值。对我而言,我需要了解开源环境真正棒的地方。不是许可证和源代码,而是社会经验。


  与如此多的开发人员和决策者一起工作,你是否感觉到了威胁?您设计一个解决方案,但是委员会提出更好的。


  Gosling说:嗯,团队做得更好,这并没有给我带来太多的担心,但是,如果他们造出做法自毙的怪物——只是把各种不同的模块勉强组合在一起,而它们之间相互没有任何关系。我一直担心这种情况的发生。技术的乐趣在于它确实需要加快发展,深入到各个领域。因此,我们投入大量的精力,放在组织这些域上,使它们相互不受影响,因此,这些域都被适当地打包。这正是面向对象技术的耀眼之处。包、类,以及帮助我们组织代码的东西,正因为有这些,与Web服务相关的代码才能够独立于业务相关的代码,如现金登记。这些模块之间不再需要进行交互,因为每个模块都整合的很好。这是相当平衡的艺术品。


  说到开放源代码,Sun公司开放了所有的Java源代码,您对这一做法有何见解呢?


  Gosling说:嗯,我对Sun公司的这一做法感到非常自豪。我非常高兴,我们公司最终做到了这一点。在公司内部,这种做法已经争论了很久,而且仍然还存在着许多大问题。但是,我们致力于开放源代码,只要条件成熟,我们立即就会将源代码开放。


  您是在前Web时代开始使用Java的么,那时公司内部仍然主要使用以太网?


  Gosling说:是的,但也不完全是。Java是在Web存在之前产生的。但是,我们所做的每一件事都是围绕着互联网技术的。网络技术和互联网深深影响着Java中的每一个细节。你已经对公司内部的网络做过评论了。那时,我们在构建Java——并且花了几十年的时间来解决。30年前,互联网就已经横跨了我们的地球。当然,30年前的互联网还称为ARPANET。但是,传输主要是基于某一种协议的。所有的从事Java的开发人员所做的工作都是关于网络的。当Tim Berners-Lee提出HTTP协议和HTML文件格式时,第一个Web浏览器诞生了,这就是人们现在通常所谈论的Web。Java出现之后,没过多久Web技术就出现了,因此,可以这么说,当Java技术最终敲定之后,当我们发布了Java第一个版本之后,Web技术才出现。因此,所有的Web技术所需要的基础都已经是存在的了。


  最初,您是否想象过,到今天,在应用程序开发领域中, Web服务将会发展成什么样子呢?


  Gosling说:我不的不承认我曾经想象过:有一天清晨,我睁开眼,然后这个版本的Web服务就出现了。实际上,Web服务不仅仅是我所假想的。因为,在二、三十年之前,网络还只是作为服务的集合,其结构的架构理念就已经相当的庞大了。而且,它确实是互联网曾经的真实写照——一个互相通信的服务的集合。使用哪种协议,使用的是HTTP上的XML还是CORBA上的,以及一些其它技术,这些都已经不重要了。这些技术只相当于你拼写单词的方式,而文章才真正是基础理论的一部分。


  用于SOA和Web服务应用程序的语言的复杂性,有可能简化么?或者继续增加复杂性?


  Gosling说:复杂性确实是非常难以回答的话题。因为,这样说吧,如果你到Santa Cruz海滩,那里有一种叫做打鼹鼠的游戏。鼹鼠,正是一种动物的名字。打鼹鼠这个游戏是这样玩的:有一块木板,上面有一个3乘3的表格,每个表格代表鼹鼠的洞,不断地会有鼹鼠从不同的洞中探出自己的头,你要做的就是,拿着棒球球棒站在那,在鼹鼠把头缩回洞之前,瞄准并打击它。然后,鼹鼠会突然从其它洞里冒出来,你必须不停地把它击倒。许多工程,尤其是那些与复杂性相关的工程,就像是打鼹鼠这个游戏。你可以暂时实现难以置信的简单化,但是,不久的将来,复杂性就会不断地从不同的地方冒出来,因为,当人们不断尝试使用工程时,他们可能会发现,在语言或者是API中,根本无法找到解决工程中所遇到问题的方案。


  基本上,由于一系列不可避免的、人们试图支持的操作,我们所面临的复杂性越来越多。如果你只是考虑手机或者Web页面的话,那么,当你站在长城上,另外一个人正乘坐从Monterey到Salinas的公交车,你们两个人使用手机打电话,这个该如何解决?而且,还要解决公交车在行使的状况。哦,顺便提一下,长城离北京很远呢。我确实尝试过这样做,我女儿正在参加会议的途中,而我在工作中,我们之间在进行通话。如果,你认为所有的员工都正准备这样做的话,那么,复杂性是绝对无法避免的。


  很多人提出简化生活这一解决方案,但是,实际上,他们所做的是把复杂性转移到了其它地方。真正的困难不是使任何特定的技术更为简单,也不是使特定的API更加简单,而是完全立足于系统之外,来考虑如何把整个系统改造的更加简单。你肯定不希望出现这种现象:当你侥幸地把简化了某一部分,然后,你发现这样做的后果是,导致在其它地方出现新的复杂性。没问题,我们能够倒退回男耕女织这样的社会形态,生活得相当简单。但是,我认为没有人会希望倒退。


  架构师的工作是观察整个系统,然后检验一下系统是否还能再做简化,您同意这个观点么?


  Gosling说:你说的这些任务当然是架构师应该做的。这些任务其实是非常困难的,因为,你完全可以在公司中找到职位为架构师的人员。但是,他们与实际细节如此脱离,以至于他们所做的架构决策完全没有意义。因为,当你深入研究如何实现这个决策时,你才会发现,这个架构决策完完全全没有考虑技术因素。架构师的工作确实非常困难,而且有很强的挑战性——既要有很深厚的专业知识技能,确保能够做出可信的架构决策,另一方面,还要有非常宽泛的知识背景,以便能够跨越各种不同的技术领域。而且,为一个大规模系统做架构,这种困难是难以置信的。


  架构师既需要懂得底层的知识,也要懂得业务流程层面的知识,您这样认为么?


  Gosling说:我同意这个观点,但是,如果你这样认为——当你真正努力来构建系统时,你就不需要了解底层细节了,那么,有句谚语可以描述:这就是困难之所在。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐