点燃一场网络战争争论之火的保险的方法是说一种程序语言比另外一种好。作为“Java之父”的James Gosling 比任何人都清楚这一点。
在他最近的网络日志中,Gosling 卷入了Java和脚本语言的争论。
和Java相比,PHP 和Python等脚本语言更容易学习,它们在开发人员当中相当的流行,尤其是那些网页开发者。很多人,包括一些前Java语言的拥护者都认为,脚本语言和所谓的LAMP开源部件正在蓬勃发展,而这种发展减弱了Java的影响。
最近,Gosling 接受了CNET新闻网站的采访,内容包括关于程序语言永远休止的争论,争论的好处以及Java的未来方向。
问:目前,人们对Java的优点正在进行讨论。很多人认为,脚本语言正在替代Java语言。那么,Java的用户正在减少吗?它过时了吗?它正在老而不合时宜了吗?
Gosling :我倒是希望这种情况是真的,那可以让我的生活轻松些。但是,我看到的资料,比如Evans Data的调查显示,很多人仍然在使用Java及其相关的技术,没有迹象显示它正在走下坡路。
我知道,很多人希望它走下坡路。对于我而言,最激动的事情莫过于存在多样性的途径。
问:为什么你希望Java过时了?
Gosling :我已经从事这方面的工作很长时间了,有时候我就想,如果能休个假就好了。
问:Evans Data的调查显示,尽管在亚洲地区的用户数在上升,过去两年半,北美地区的Java用户数却在下降。PHP 和脚本语言正变得越来越流行、如果你看看Web2.0公司的情况,你就会发现他们中的很多正在使用AJAX这种包含了脚本语言的开发工具。
Gosling :AJAX只是用JavaScript来开发先进玩意儿的模式。它确实很酷,但它肯定也有它的问题。
问:是的。有一本名为“超越Java”的书讲,Java对一些事情来讲很棒,但对Web 开发,另外一些开发语言和架构要更适合些。你对此的观点是什么?你认为这种观点有根据吗?
Gosling :当你看看php 这样专注于Web 开发的语言,如果你只是想去做网页,你就会发现它们确实很好。它几乎是JSP 的一种克隆。
我认为,当你准备超越单纯的网页开发的范畴,事情就变得有些混乱。当你想作一些分析或整合的工作,PHP 就变得比较的困难了,因为它主要专注于网页开发。
我们经常发现,很多人用PHP 来做网页,而涉及到底层的数据分析时,他们就用Java代码来完成。通常的情况并不是一种技术替代另外一种技术,而是一种技术补充另外一种技术。
问:是不是说,Java主要使用在服务器端,而脚本语言主要应用于前台,对于Java来讲,这难道不是一个问题吗?
Gosling :我自己认为,在计算任务的世界里,Web 前台这些事情总是要更加的直接和简单些。在Java的范畴内,人们也做了很多的脚本方面的东西,象JavaScript,Groovy,J/Python和J/Ruby。
有一点经常被人遗忘,这就是,Java是一种两种层面上的语言:它既是一种虚拟机,它也是一种ASCII 语言。
很多人看不到虚拟机的神奇之处,但有很多很多的脚本语言已经建立在这种虚拟机之上了。
问:为何你希望有脚本语言和Java虚拟机相联系呢?
Gosling :使用脚本语言的好处是,它们可以快速的访问巨大的工具库,它们的性能和协同性也相当的好。你可以使用Groovy,然后访问零售点的终端,智能卡,数据库等等。
问:Java语言的设计初衷是那些分布式的计算,它一般被用于复杂的任务。Java是否应该被用于简单任务?
Gosling :从历史来讲,它在处理简单任务方面表现很出色。过去几年,Java的一个设计方向是在高端。如果你在一家银行,你希望驾驭一台晚间处理1 千亿美元的服务器,那么Java可以很多的胜任这一点。
问:易用性曾经是Java发展的一个障碍。你们是怎么克服这一点的?
Gosling :事实上,我们并不是去改变语言,这是因为,如果你想让一种语言变得简单,你往往会破坏它处理高端任务的能力。我们已经做了一些简化的工作,比如Java Studio Creator ,你可以用它来拖拉AJAX部件,处理数据库访问等等任务。用它来做网页相当的快。
问:过去几年,LAMP(linux+apache+MySQL+PHP)逐渐兴起,你认为它是ava 世界以外的一种成熟的选择吗?
Gosling :LAMP当然已经变得相当的成熟,Java和LAMP配合得相当的完美。总体上讲,我希望这块市场存在多样性的选择。
问:听起来,你好象不太担心 Ruby on Rails,PHP 或者LAMP这些开发模式的崛起。这些东西不属于Java的范畴,但你似乎觉得它们相当的好。
Gosling :事实上,我认为它们相当的酷。所有这些东西事实上都协同工作。比如J/Ruby,它就是在Java虚拟机上部署的Ruby. 这相当的漂亮。我认为,那些脚本语言的开发人员其实还不够与众不同。
问:什么意思?
Gosling :如果你看看它们的程序,你就会发现,它们看起来就像Java程序一样。
问:Java是将继续保持一种通用语言和平台风格呢,还是专门向移动或者服务器之类的专业方向发展?
Gosling :这里存在很多的矛盾。一方面,你从专门化哪里获得了很多的动力。另外一方面,你的这种动力又来自通用性。
问:开发世界的人希望出现流行趋势,那么,你希望Java成为流行吗?
Gosling :八九年前,Java就已经是流行趋势了。它真的是一种有趣的事情,因为Java已经不是一个单独的东西了,它已经成为很多不同东西的集合。