1984年1月,applecomputer公司一举创造了一种成为个人生产力关键因素的全新的计算观念:台式计算机,完全改变此前的计算情况。1995年5月,当sunmicrosystems公司把java发放到internet之上时,又再一次引起世界的震动。
java虽然名字没有太多的意义,但有两点却事关重大。第一,sun的这一简单的基于对象的开放系统新语言,能使软件开发者利用worldwideweb或当前isv们正在开发的任何前端软件,设计可在internet上分发的应用软件;第二,它是一种虚拟计算机(技术上叫做javavirtualmachine),最终将使一切基于java的应用软件无处不在???在任何地方运行,不管是什么硬件和用什么操作系统。
为什么叫java?
sun公司副总裁jamesgosling于1990年首次提出java的设计,今天他指挥着sun的全部java开发工作的技术队伍。java语言原来被jamesgosling叫做oak(橡树)。他起这个名字的灵感出自他在sunmicrosystems公司办公室窗外的一棵大橡树。
后来,java开发小组发现,oak是sun的一种编程语言的名字,于是只得另起新名。开发小组经过几个小时的冥思苦想后发现,要给一种编程语言起一个好的名字是太难了。
最后,有一天在去当地咖啡馆的路上,突然生出了这个妙想???java。
其实,java是印度尼西亚共和国的一个最重要的岛屿,中文译名叫爪哇,位于苏门答腊岛之东与巴厘岛之西,自1696年以来便盛产咖啡。迄今,java咖啡仍极富盛名。
java革命
javavirtualmachine或者java应用软件,可不作修改且无需重新编译就可在任何平台上运行,包括智能峰窝电话、膝上型机、windows3.1、win95、nt、os/2或unix工作站及服务器、以至运行mvs的as/400或ibms/390。而且它的运行可以跨越任何数量的网络及inter-net协议,利用自定名(you-name-it)数据库网关,并遵从包括corba及networkole在内的任何一种分布式对象标准。
无疑,这是革命性的。而更具革命性的是sun公开ja-va的决策,尤其是把javavirtualmachine对一切人公开。这意味着,任何软件厂商或单个的开发人员,包括开发工具厂商、语言编译器开发者、rdbms厂商、中间件厂商、客户机/服务器应用厂商、以至躲在阴暗角落里的“黑客”,都能利用javavirtualmachine的字节代码语言,创造出具internet能力的、可随处运行的应用软件和服务。
所以,就象革命性的mac硬件及其os展现了企业中以台式机为中心的客户机/服务器计算的亲用户的时代一样,现在这种新的java技术正在开辟一条蓬勃发展的、企业内外以网络为中心的客户机/服务器计算的亲开发者的道路。
java革命将引出一个以授予个人权利为标志的软件世界。java展现了让操作系统像窗玻璃一样透明的前景。软件、信息技术与网上的内容将依其质量与服务来评判,而不由其创建者的独家拥有(也可说“垄断”)所左右。
java群体每天都在扩大,它既包括一些世界最大的isv,也包括公司cio、信息技术人员、系统分析人员、c/s开发人员、编程人员、多媒体设计者、市场行销人员、教育工作者、经理、影视生产者甚至业余爱好者等广泛的用户。
从传统上看,这样一些人在一起有效地工作是不多见的。当我们谈到开放系统时,我们往往是就已发表的api及规格,或者源码的可得性,或者硬件、联网及操作系统而言的,没有一个人是从人的开放的意义上来谈的。java完成了开放系统的闭合链。它开发了人力资源,而反过来又开辟了共同工作的道路。
正因为如此,sun的java正以令人难于置信的速度赢得在企业计算世界中的地位。
让企业在烤箱用的os上运行吗?
原来的java小组从事消费电子设备的软件设计。他们很快发现,诸如c及c++等语言是不合适的,因为它们对特定的计算机芯片都必须进行编译。当一种新的芯片出来后,大部分软件都要重新编译,才能充分发挥新芯片的特性。一旦编译好后,要用新的软件库时c及c++程序又不容易修改。当修改库时,这些程序又必须重新编译。
消费设备软件必须要用新的芯片,因为制造商受到元件成本的制约。如果计算机芯片的价格太高,它们就会马上用新的更便宜的来替换。即使一点点价格的变化,当销售成百万台设备时差别就很大了。
用于消费电子设备的软件还一定要非常可靠,要比大多数计算机软件可靠得多。如果消费产品出现故障,制造商往往就得替换整个机器。
基于java的“internetpc”
很少有象internetpc这样的争论成为业界的热门话题的了。internetpc由ibm、oracle和sun首先倡导,而众多较小的公司也在付诸行动。
其中心思想是,这种internetpc将是不到500美元的设备,人们可用来从internet卸载他们需要的程序,而无需本机存储程序和文件(大多数internetpc的设计均不含硬盘)。对管理人员来说,internetpc可望大为减少管理、维护费用和时间,消除一轮又一轮费钱的升级,而装入免费或者几乎免费的软件。
在sun的internetpc设想中,java的运行犹如一个小操作系统???可以称为javaos,类似于内核的前端软件。这种操作系统代码将能在各种微处理器上的和从手持式pda到最小内存???大概4mb的低档pc机等设备上运行。
如果java能在让编程人员编写非常紧凑的代码方面获得成功的话,那么,即使今天大多数用户面临有限的带宽,也可能使用户相当快地卸载和运行java小程序。
今年1月,sun在demo’96交易展上预展了一台internetpc样机,包括监视器在内,尺寸约为5×9×2英寸。sun公司官员承认,该机价格将超过500美元,主要因为它带一种工作站监视器。
低于500美元设备的想法会是什么样子,请看看ora-cle的networkcomputer(nc)。基本机型将包含一只廉价risc微处理器、一个基于rom的操作系统、4~8mbram、一个pccard扩展槽、一个以太网接头、一个键盘和一只鼠标。由于所提出的系统不带监视器,用户势必要插到pc监视器或电视机上。
oracle的nc定于3月出样机,预计夏末限量交付。o-racle打算设计一种便携机和一种更贵的多媒体机。公司将给其它制造商发放这些设计的许可证。
虽然sun、oracle和ibm(以其interpersonalcom-puter或ipc)大受注意,而少数小公司本月(3月)就可望交付net机。例如:英国剑桥的acorncomputergroup、德州澳斯汀的sunriverdatasystems及渥太华的transphone。今年年底,密执安州伯明翰的webbook公司打算提交一种专为java设计的web接入设备。该设备将用圣地亚哥的patriotscientific公司的shboomrisc芯片作它的java运行引擎。象java一样,shboom采用一种面向堆栈的体系结构,patriot官员声称,它将有比运行其它处理器更快的优点。
java的保证
java是一种有一大套保证的语言,当一起获得时,便成为一种对程序来说确实先进的操作系统。这些保证的大多数在别的语言中也采用了,但没有哪种语言或操作系统一起提供全部的保证。
这些保证包括:
1.java代码是可移植的,而且对当代几乎所有的操作系统无需修改便能运行。
2.java给程序员提供真正的多线程以及同步化方法。
3.java提供与平台无关的用户接口。
4.java具有内置联网功能。
5.所有java对象都知道它们怎样打印输出。
6.java编译器强制进行所有的出错和意外处理。
7.自动进行内存清零。
8.按小程序编写的程序可自动在网上分发。
9.java小程序将在任何平台上的轻型客户机web浏览器中无缝运行。
java优于ole吗?
sun并非是唯一一家想到分布式对象的公司。mi-crosoft在推动其objectlinkingandembedding(ole)规格成为软件组件的事实上的标准方面,已获得了很大的成功。而且,将随windowsnt的下一个版本(nt4.0)交付网络可用的ocx(即ole控制),在许多方面都与java对象相似。两者均支持一种重要的面向对象特性???继承。要让网络对象发挥它们的潜能,这种继承父对象功能性的能力是至关重要的。
但是,即使java小程序与网络可用的ocx在许多方面相似,却也存在一些极为重要的差别。
首先,java小程序是与平台无关的。一个java小程序只要写一次就能在运行javavirtualmachine的任何pc机上运行。java小程序与平台无关,而ocx却或多或少受限于windows工作站。
其次,java小程序在安全的java环境下执行。相比之下,执行一个从成百万个internet节点中的某个节点来的电子数据表ocx,难以保证它们实际运行的不是一个病毒的荒原,而使它们的硬盘驱动器不能工作。java就不一样,它不允许对内存或硬盘的非授权访问,从而大大减小了一个恶意程序造成的潜在的危险。
最后,ocx与java小程序之间的一个重要的差别在于,一个ocx只去一个方向:服务器到客户机,而java小程序可以去两个方向,在客户机与服务器之间不管方向。例如,一个希望在几台服务器上查找一张数据库表的客户机,可以动态地向每台工作的服务器送一个小程序。另外,这些小程序不同于传统的客户机/服务器应用程序,不必要预先安装。
javavirtualmachine:一种软cpu
大概,java环境最重要的组件就是jamesgosling定名的javavirtualmachine了。这种vm比起典型的basic或其它高级语言运行期解释器强多了。vm是仿照一种小巧高效的cpu设计的。它采用java编译的字节代码,而且只要是机器语言它都运行。vm的更低层把这种伪机器代码转换为实际的硬件调用(不管它运行的机器上有无os驻留都照办不误)。
javavirtulamachine支持大约248个字节代码。每个字节代码执行一种基本的cpu运算,如把一个整数加到寄存器,把两个寄存器中的数相加,对子程序的转移,存贮结果,寄存器加1或减1,不一而足。其实,vm是一个堆栈结构且有本地和全局变量的算术逻辑单元(alu)。
这种堆栈体系结构是这样工作的:要把两个数相加,vm首先把它们放入堆栈,然后加它们。在完成加法后,vm把结构留在栈内供过程的下一步用。如果你想到hp计算器的逻辑的话,你就接近于理解vm的逻辑了。
本地vm变量用于暂存和调用子程序。全局变量则用于跟踪,例如,根据java字节代码程序的实际机器代码在内存何处执行,当前的对象是什么,相关的数据存放在内存何处,以及其它的全局信息。
它不应让人惊讶,有些芯片制造商(包括sunmi-crosystems和patriotscientific在内)已经把java字节代码作为基本指令集做成了一类新的cpu。它们可以用于简单的手持式设备(蜂窝电话、传呼机等),以及internet专用设备。利用把字节代码操作对象烧到硅芯片上,所以java能以相当快的速度运行。
闽公网安备 35060202000074号