2. Java究竟是什么?
Java是一种虚拟硬件系统结构,是一种软件二进制规范,是一种编程
语言。当我们看到Java一词时,它可能表达上述三个含义钟的任何一
个。尽管这三个东西可以独立存在,不过实际上他们总是在一起出现
。所以也很少有人分的那么明确。使用Fortran语言编写Java虚机上
的代码理论上是可行的。但是有谁乐意做这件事呢?
作为虚拟硬件体系结构,
Java虚机和ALPHA、PowerPC、SPARC、IA32、51、960是同一概念上的
东西。也许您会奇怪?他们怎是同样的东西呢?IA32不就是PIII、PI
V那一大块吗?其实不然、我们知道386、P5、P6、P7的内部结构非常
不同。属不同的微体系。但是他们实现了相同的IA32指令集合。IA32
也不一定非要通过硬件实现,通过软件也可以。这种软件CPU产品广
泛出现在操作系统和CPU密集软件的开发、调试工具上。主要用于在C
PU出现之前调试软件。Java指令集同样也可以通过硬件实现。只是在
半导体工业激烈竞争的时代,没有大公司(含SUN)愿意把这么做。
SUN常常说M$很害怕java。他们之间的确存在很强的竞争关系。倒不
是Java高级语言的问题,我认为是Java二进制规范和 Windows操作系
统存在竞争。不妨考察Java中的(.class文件格式、装入方法、执行
过程、JDBC接口、J3D接口)和Windows中的(PE文件格式、DLL文件格
式、装入、连接方法、ODBC、Direct3D)。就知道竞争多么强烈。和N
T/IA不同。Java.exe执行程序包含虚机规范和二进制规范。在NT/IA
中是分离的产品。
人们总喜欢把Java高级语言和C++类比,他们之间的确存在很过相似
的地方。不过我认为C++和Java不存在什么竞争。它们使用在不同的
场合。他们的区别(内存管理、对象类型、线程规范)决定他们的用
途。用形似而神不似来形容C++和Java吧。仅从高级语言方面来看。J
ava真正竞争来自ECMAScript 。也就是JScript和VBScript。
3. Java虚机和IA32比较
Java VM和IA32最大的区别是Java VM的主要实现不考虑效率问题。由
此派生出寄存器少,指令结构简单(同样功能生成的程序代码长),
寻址空间小,寻址方法少、数据类型少等。除了上述问题,Java VM
没有涉及指令(显式或隐式)并行问题。 |
|