Java是目前最优秀的软件开发语言之一,具有广泛的应用前景。由于它的结构简单,面向对象,跨平台等优越特性使它具有极强的生存力,有许多闻名的厂商参与开发和支持,比如IBM,Oracle等。Java在桌面程序上应用已经不罕见,参与Java开发的公司很多都有相应的Java桌面应用。比较成功的有JBuilder,Oracle,DB2,JClass等,国内也有优秀的办公软件JReport。上述这些软件都是基于Java早期的GUI,Awt和Swing。Swing和Awt由于是Sun新开发出来的GUI系统,加上它比较庞大,占用大量内存,反应速度慢不受欢迎。就连众多的Java开发人员对它们也是敬而远之。自然的观点是:Java用在客户端是不可想象的。
目前,IBM已开发出了Java新的GUI,Swt,并把它贡献给了Eclipse。新的Swt基于JNI对本地窗口饰件的调用,并且在Window和Linux平台上首先实现。这样做的结果是:用户界面不再是用户不熟悉的Java风格------反应速度慢并且跟其他程序不兼容(比如鼠标滚轮失灵,金山词霸无法工作);程序包也变小了,相应的内存占用也少了。基于这种图形界面API的Java程序势必让人对Java客户端刮目相看。Eclipse就是一个例子。
假如把Swt和其他Java代码再本地化将是怎么样?------Jove和Jet都在炫耀这种技术,事实上它也是值得炫耀的。进一步编译成本地机器指令的Java图形界面程序将缩小到几百k,一张软盘就可以装得下,并且跟其它编译过的C或PASCAL一样在本机上可以直接运行。
Swt给Java开发者带来了福音,而Java程序的本机指令编译技术使它如虎添翼。随着时间的推移,将不会再有人争论Java是否适合于客户端。从这个意义上来推测,Java本身也将在某种程度上由一种技术退化为一门编程语言。用我们古人的话说,叫做“物极必反”,归咎于网络泡沫时期Sun对Java有些夸大的宣传。
依据IBM推出开放源码的项目Eclipse和与Instantiations(Jove的所有者)的合作伙伴关系,加上长期的虚拟机开发经验,估计下一代基于较小核心的虚拟机将首先由IBM推出。Instantiations的竞争对手Excelsior(Jet的拥有者)紧随着Sun的步伐------宣称能在两周内推出基于新版本较小核心虚拟机的Jet,事实上他们的版本更新同Sun的虚拟机一样快,遗憾的是Sun却好象没有把它当成自己的朋友:(。推陈出新的作品不一定会被大多数人认可,Awt/Swing有可能遭到抛弃。微软喜欢创新,虽然它屡试成功,这次推出Java的复制品C#的前景却不容乐观。在软件三国里,IBM有可能在Java方面与Sun结成联盟,在桌面软件市场上与微软竞争。