服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 核心技术 > 查看文档

james gosling:java、开源 以及web服务

  现在,已经有成千上万的java程序员了,但是,曾经有那么一个时期,全世界只有一个java程序员,james gosling先生。近日,gosling先生谈论了他现在所从事的工作,以及他对java未来、开放源代码、网络、web服务以及复杂性与简单性问题的见解。

  现在,已经有成千上万的java程序员了,但是,曾经有那么一个时期,全世界只有一个java程序员,james gosling先生。他完成了java程序设计语言的原始设计,并且开发了原始的java编译器和虚拟机。目前,gostling先生是sun微系统公司的副总裁,他仍致力于软件开发,并发挥着重要的作用,尤其是在netbeans方面。近日,gosling先生在接受searchwebservices站点的采访时,谈论了他现在所从事的工作,以及他对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说:我同意这个观点,但是,如果你这样认为――当你真正努力来构建系统时,你就不需要了解底层细节了,那么,有句谚语可以描述:这就是困难之所在。

查看本文国际来源


  阅读关于 web服务 java 开源 ruby soa 的全部文章

扫描关注微信公众号