ccidnet????

出版日期:1997-06-16 总期号:662 本年期号:22

本期导读
综合消息
网络通信
市场商情
国际文摘
专题评测
编程维修
java正发展成为一种平台

陈幼松

  被誉为进入网络世纪入场券的java,在《人民日报》、《科技日报》联合向两院院士征集意见评出的1996年十大国际科新闻中,名列第九。

  在计算机发展史上,还没有哪一种新语言能在这么短的时间内得到这么多工具厂家、软件开发厂家、os厂家如此巨大的支持。

  作为一种语言,java已树立巩固的地位,今后的问题是它将发展成为一种最广泛使用的平台。很可能在本世纪进入下世纪之交时,java将取代今天windows的地位,成为世界上使用最广的平台。



  java已不仅仅是种语言

  由于java虚拟机(vm)能够用软件对计算机进行仿真,java已超越于语言而成为软件平台。javavm可在现有的计算机和os(如windows和macos)上运行,它也可以在仅仅为java而设计的硬件上运行。利用java的开发者,不管他们是否意识到,他们都在支持一个新的平台,这种平台同底层的os和硬件无关。

  今天许多商业软件的开发者,首选windows来为它开发软件,因为全世界的pc约有90%运行windows。然后他们使这些程序用于使用不多的平台(如macos、os/2、unix),或干脆不理它们。

  一旦javavm的安装量超过windows,这些开发者也许最终会首选java来为它开发软件,因为java软件从本质上说是跨平台的,而且能够在带有java虚似机的任何系统上运行。有一天,windows也许会变成另一个使用不多的平台(尽管在这类平台中,它仍然是最大的),这也许将取决于这种专门支持是否过于昂贵。java将引发自从windows超越dos之后的最大规模的平台转换,但所有这一切不会逼迫用户更换其硬件和os。



  作为语言java已树立起巩固地位

  但是,在java成为主要平台之前,协作及商业软件的开发者必须先把java作为一种语言。去年夏天许多人还对java是否强大得足以用于重大的软件开发而抱有疑虑。然而今天这一问题已不复存在,因为以下事实回答了这一问题。

  ·去年10月已有20万以上的专业程序设计人员在使用java。

  ·在超过5000人的大公司中,企业级开发人员中有三分之一在使用java。

  ·去年夏天11家公司(包括ciscosystems、ibm、kleinerperkinscaufield&byers、netscape、以及oracle)投入1亿美元建立java基金会,这是为新java计划提供风险投资的无与伦比的资源。

  ·ibm和超过50家独立的软件开发商发表“旧金山计划”,准备用java开拓新的商业应用。

  这些发展有助于改变java只不过是为了给web提供拼接程序(applet)这样无足轻重语言的印象。如果超越五花八门的web站点观看一下,便能发现java是种有工业生命力面向对象的语言,它本质上支持继承、封装、异构、多线程、动态链接和界面。都达到了和c++之类一样的水平。

  java所以能够赢得架子很大的专业开发者,因为它非常类似于c++,因此有经验的程序员很可能用不着重新学习。更何况它克服了c++的主要缺点。java使得能够更容易写出可移植的、可重新利用的和无故障的码段。

  跨平台兼容性是java容易取得成功的非常重要因素。java编译器(可用于windows、macos、unix)把java源码段变换成字节式码段的类别文档。这些类别文档相当于其他语言编译器生成的可执行二进制文档。但是java的字节码段同地道的二进制文档不一样,它并不针对特定的微处理器结构。它的“地道”结构是javavm,javavm目前还只有软件的。

  这使得java类别文档可以移植到任何具有运行java环境的硬件平台。这样环境由javavm、一些标准的类别库、字节码段检验器(用以保证安全性)、以及字节码解释程序组成。解释程序在vm上运行类别文档而不需要程序员改写甚至重新编译他们的源码段。

  这种“一次写成,便可在任何地方运行”的通用性,使得一些公司不得不用java来写他们的java开发工具。这样,它们就可以在任何机器上运行。ignitetechnology的可视gui建立工具layoutmail便是一例。

  这是第一次开发商能够使用从事windows的人、从事unix的人、或从事mac的人来写应用程序。所有这些程序员都可以在任何平台上用同样的工具为同样项目而工作。这使得开发商可以雇用那些拥有所希望编写的应用类型的编程专长的程序员,而不必考虑他们熟悉使用哪种机器。

  由于java程序驻留在运行java的环境中,它们通常不必直接同地道的cpu和os打交道。运行环境将进行存储器管理,包括把碎片集中起来。这样,程序员就不必分配存储器或处理无用的对象。这里不需要指针结构,在c++中指针结构是造成错误的一个重要原因。java有清晰而有效的模块,适于处理错误和有助于码段的再利用,这是因为它是彻底面向对象的。java还更换了用于c++的复杂的多重继承的界面。

  csxtechnology决定在数量巨大的铁路发运跟踪应用中使用java,最关键的因素是它有助于提高程序员的生产率和跨平台自由度。

  不过对java移植性的大肆宣扬,并非无懈可击的。sun的jdk1.0并不能完全囊括底层os的各种地道api,所以java的先行者必须用更有限的gui产品和功能来工作。此外,在不同的java运行环境中还有许多麻烦对应于地道api的高层次对象。

  像java这样一下子风行起来的新事物,发生一些麻烦是不可避免的。今年初将要发表的jdk1.1将解决这些问题中的许多。新的javavm和开发工具也将投入工作。java提高得如此之快,就像某些地方的气候,如果不喜欢它,过一小时就会发生变化。



  java正发展为最强大的平台

  即使今后java什么也不是,仅仅是作为一种流行的进步语言,sun就获得了高分。可是,sun以及其他一些人头脑中还有一个宏大的目标。这就是java能否成为一个平台,成为windows杀手?

  也许做不到,但不见得就一定做不到。重要的是如何使java可以取代windows而不必灭杀windows或任何其他平台。java是一种暗中的平台,它完全靠软件来扩展,并可以平静地同地道os相处在一起。

  其他的平台都同特定的硬件紧密相关。对于每一个安装的windows拷贝,都必须有windows兼容pc来运行它。macos、os/2、unix等等也是一样。使用仿真器诸如softwindows和带有双导引的pc,只有很小的重叠。可是对大多数情况来说,只有一些人愿为一台机器扔下上千美元时才会把领先的平台加到已经安装好的基础上。

  java不会出现这种情况。它是一个通过软件实现的平台,它实际上可在任何机器上运行,而且用软件比用硬件扩展得更快。只要安装了java兼容的web浏览器,诸如sun的hotjava、netscapenavigator3.0或microsoftinterentexplorer3.0,便已在计算机中建立了java运行环境。还可以从web上免费下载jdk使自己的系统成为java平台。java开发工具也同vm一起提供。java不像病毒那样有自复制能力,但它很像传染病那样会很快蔓延。

  apple、ibm、microsoft、novell、sgi以及sun都在通过把java运行环境集成到自己os中,异乎寻常地在加快这一过程。它们都声称自己的os在一年以内便能使用java。它们都认识到java的广泛用途和潜力,知道提供一个卓越的java运行环境将会给它们带来极有竞争力的优势。这对用户是件好事,因为每一个安装新的可用java应用的用户,都不用使自己的系统同其固有的vm混杂在一起。

  apple认为这对于在mac平台上建立良好的、稳定的、标准的javavm是极为重要的。apple正全神贯注于稳定性。因为软件开发者对稳定性的要求比任何别的都更迫切。

  到今年年底将会有windows95、windowsnt、windows3.1以及macos用的javavm,最有特色的unix、os/2、netware以及apple的pippin和newtonos等也会有自己的javavm。ibm甚至要把java用到as/400和mvs,估计它们管理着全世界公司数据的70%。这也就是何以人们并不急于预测世纪之交时,世界上vm的拷贝数将超过任何容放它的os。

  需要指出java将不会取代任何这些os。实际上,javavm只是良好的寄生物,离开了容放它的os,它将无法运行。虽然sun拥有专门的javaos,但它只供java装置专用而不适合于通常的pc。这使它谈不上成为windows的杀手,实际上java需要windows,使自己能够在大量安装有windows的pc中传播。

  如果真的出现这种情况,的确是非常有趣。其绝对数量将使java成为世界上最广泛使用的软件平台。每一种javavm都将运行所有已经写出来的和将要写出来的java程序,而不必进行导入或重新编译。这将影响到现在软件领域势力的平衡。

  它将有利于现在处于少数的平台,以软件开发者来说它们不像windows那样有吸引力。今天开发者都把目标集中在windows上,因为它安装量大容易获得巨大销售量。如果java的安装量最大,开发者便会逐渐地离开windows,处于少数的平台将会得到更多的软件。另一方面,java对这些处于少数的平台也有不利影响,因为将会使它们的专门开发者也随之减少,而这些开发者独特经验的作用已被公认,是对