【IT168 专稿】
会议时间:2008年1月13日下午
会议地点:北京九华山庄
嘉宾:
SUN公司Java技术推广经理 李涛
毕业于清华大学,并于2000年获美国坦普大学计机硕士学位。曾在美国Independence Blun Cross保险公司和Broadreach Consulting公司任职,从事软件开发和架构师工作,有的大型商业网站开发经验。目前李涛在SUN公司担任Java技术推广经理,是多个世界性技术会议的专题讲师,目前他专著的领域是JavaEE和Web2.0。
主持人:
再次感谢毛先生的精彩演讲。
下面有请SUN公司的李涛先生,给我们带来一些Java方面的真知灼见,掌声有请!
李涛:
谈不上真知灼见,大家交流一下,互相学习。
我叫李涛,在SUN负责技术的传播和技术社区的培育,如果大家有需求可以直接跟我联系。
今天我要和大家讨论的是Java面临的一些挑战,以及Java EE今后的发展和改进。
大家参加这个会议,应该是拿到2007年中国IT蓝皮书,那本书里提到Java作为一个编程语言是第一选择。我们公司有一个半年前的数据,就是全球有500万的开发人员用Java开发,所以说Java语言是名副其实的第一大开发语言。但是Java也存在一些 挑战,2005年就有人提出RB会代替Java,Java会死掉,有没有谁同意它五年之后 死掉?十年呢?十五年之后大家都退休了,咱们不谈了。咱们就谈十年以内,现在可以看得见的挑战和改进。
我们先看一下Java面临的挑战,然后Java的完成性,我们做了Java的改进和Java EE的改进。
首先我们讲编程语言的挑战,Java已经有十一年的历史,但现在面临着一个很大的挑战,就是动态语言的挑战,比如说RB、PL、PY。为什么会有这样的挑战?我们做一个简单的例子,比如说S1,就是一个1的组成,N2是一个数字,它有一个数值是2。然后做一个新的字符串是S1和N2通过简单的组合,再做一个N3,就是1和2的相加,答案是3,所以新的字符串是1、2,N3值是3。大家看怎么做,定一个S1,然后N2,N3就是加一下。
如果你用PL用,字符串加起来就是点,然后做组合计算。PY跟PL差不多,就是调用PRINT的方法,S1换成数字用IN的方法。
最后你发现对比起来,Java做同样的这一件事用了11行的代码,240个字符,PL是5行,85个字符。PY也是5行,80个字符。
Java有什么特征呢?
第一个就是面向对象的,但也有概念。
第二个,不用做的,人工的做内存的管理,语言本身就帮你做了,在你编程的时候,集中在业务逻辑上就可以了,不需要管理底层的,类似硬件的管理,你需要有这样的特点,效率会高一些。
第三个,为了可以让他跨平台,或者运行的时候会有更高的效率,一般运行在某种虚拟机上,要这样的话,目前符合要求的就是Java,C++也在做这个事。
我们看一下DY的特点。
第一,可以用很短的字符编程。
第二,你编程的时候,要用一个变量的时候不需要静态的提出来,用之前不需要定义,之前有一个功能做的时候,就把一个变量拿过来直接用,具体什么类型,定义的时候不用管它,只是在运行的时候,运行机制自动的找到它是什么类型来做。
第三,可以用动态语言编程。
Java从严格意义上来说功能不是很强,但是它现在很火,因为它有AJAX的技术,AJAX火了,所以Java也就火了。
PL我也用过,只不过它就像意大利通心粉一样,很乱。PL5虽然有一些发展,但是没有太大,P6我们不知道会有什么改进。这个东西很难说了,会不会出来就不知道了。
PY用的很广泛了,比如说小型网站用的还不错的。
RB是2000初日本发明的,非常好的一个语言,现在它火起来就是有一个网络的版本,现在看到的人也很多了。
在业界有很多人不喜欢动态的脚本语言,主要有两个因素:
第一个,没有STATIC TYPING容易出BUG,不容易调整。
第二个,不容易在虚拟机上运行,灵活性差一些。
实际上STATIC TYPING的观点有点夸大了,实际上它是有维护困难的问题。但是它维护困难以什么方式实现呢?就是以敏捷开发的方式实现的,所以业界老大SEAN McGrath,说它是一个双刃剑,你定义的时候必须提前告诉它。还有另外一些人说,你用其他的平台也可以替代STATIC TYPING达到。
第一个原因反对理由不是很成立的,因为没有它说的这么强。但是假如和Java比较,跨平台性是一个很大的问题。
首先Java有一定的优势,你可以告诉IDE,我的变量类型是什么,IDE可以根据你变量类型进行处理,IDE效率很高。我不知道大家是不是用PL来做,它最明显的问题就是代码自动完成,完全比Java把了很多。所以STATIC TYPING有好处的,虽然优缺点,但是还是有好处的。
其次Java 保存的时候有很多的信息,Java5和Java4比性能有一个很大的提高。Java4的时候保存性是不存在的,是运行的时候,是看谁来运行,然后再来运行。然后5里面就改变了编译的过程,在编译文件里面存了一些安全信息。所以运行的时候,就会很快。因为它把安全信息已经做完了,存储起来了。所以编译可以说是 Java的缺点,也可以说Java的优点,因为它在你以后运行的时候一些好处的。
所以说现在有人问了,你说DY脚本语言也有很多的优点,开发起来快,Java也有优势,到底用什么呢?这个没有最好的,只有最合适的。比如你有一个项目,你会Java,你就Java开发,因为 你学一个新的语言,也不现实。如果一个语言不是很复杂,用动态脚本来做,的确使你的开发效率大大提高。这是对的。如果你做一个银行的项目,做一个保险的,非常大的项目,比如说毛老师说的大型项目,代码就不是几行,几十行,而是几百万万行了。所以选择编程语言,还是根据自己的实践,根据自己的具体需要来决定。
Java之所以能跨平台,不是因为Java本身,而是JVM,你在不同的平台上有相同的JVM,输入不一样,输出是一样的。另外还有API,Java语言,一共是三个部分组成的。
将来我们会把Java Platform集合起来,不仅有跨平台的特性,还有跨语言的特性,这是以后的一个发展方向。
JSR223有一个规范,现在做服务必须有Java,以后就不需要Java,只要你做的Java模型上带一个交换语言的接口,就可以做Service。它带来的优点,它可以拿到Java的接口,还可以拿到其他的脚本语言API,而且不需要编译,开发的成本节省了很多。从平台方面来说,Java是会赢的。