这两节主要介绍了Java的历史,以及对Java的各种特性做了一个全面的概括性介绍,可以让我们窥得Java的全貌。
Java的前身是Oak。20世纪90年代,研究人员为了避免C++在嵌入式设备中的复杂、庞大等劣势,着手开发了一个新的面向对象的编程语言Oak。 Oak当时主要用于嵌入式设备。但在当时所有公司对Oak语言还一无所知的情况下,就生产硬件产品的风险实在太大了,所以Oak语言也就因为缺乏硬件的支持而无法进入市场,从而被搁置了下来。 到了1993年,Mosaic浏览器横空出世,它是互联网历史上第一个获普遍使用的网页浏览器。Mosaic的出现,点燃了之后互联网热潮的火种。 研发人员们认为,认为随着Mosaic浏览器的到来,因特网正在向同样的高度互动的远景演变,而这一远景正是他们在有线电视网中看到的。于是1994年6、7月间,在经历了一场历时三天的讨论之后,团队决定再一次改变了努力的目标,这次他们决定将该技术应用于万维网。作为原型,帕特里克·诺顿写了一个小型万维网浏览器WebRunner。 1995年,互联网的蓬勃发展给了Oak机会。业界为了使死板、单调的静态网页能够“灵活”起来,急需一种软件技术来开发一种程序,这种程序可以通过网络传播并且能够跨平台运行。这个时候,Sun公司想起了那个被搁置起来很久的Oak,并且重新审视了那个用软件编写的试验平台,由于它是按照嵌入式系统硬件平台体系结构进行编写的,所以非常小,特别适用于网络上的传输系统,而Oak也是一种精简的语言,程序非常小,适合在网络上传输。 Sun公司首先推出了可以嵌入网页并且可以随同网页在网络上传输的Applet(Applet是一种将小程序嵌入到网页中进行执行的技术),并将Oak更名为Java(在申请注册商标时,发现Oak已经被人使用了,再想了一系列名字之后,最终,使用了提议者在喝一杯Java咖啡时无意提到的Java词语)。1995年5月23日,Sun公司在Sun world会议上正式发布Java和HotJava浏览器。 至此,由于看到了Java的强大优势,IBM、Apple、DEC、Adobe、HP、Oracle、Netscape和微软等各大公司都纷纷停止了自己的相关开发项目,竞相购买了Java使用许可证,并为自己的产品开发了相应的Java平台。 1996年1月,Sun公司发布了Java的第一个开发工具包(JDK 1.0),这是Java发展历程中的重要里程碑,标志着Java成为一种独立的开发工具。9月,约8.3万个网页应用了Java技术来制作。10月,Sun公司发布了Java平台的第一个即时(JIT)编译器。
Java并不只是一种语言,之前出现的许多语言也没能引起那么大的轰动。Java是一个完整的平台,有一个庞大的库,其中包含了许多可重用代码和一个提供诸如安全性、跨操作系统的可移植性以及GC等服务的执行环境。 相比C++,Java具有更令人赏心悦目的语法和更易于理解的语义。与此同时,Java本身不仅提供了可移植性、垃圾收集等功能,而且还提供了一个大型的库。所以可以说Java是一种功能齐全的出色语言,是一个高质量的执行环境,还提供了一个庞大的库。因此Java对广大程序员有着不可抗拒的吸引力。
包括詹姆斯高斯林在内的Java的设计者们,在1996年编写了颇具影响力的“白皮书”,用于解释Java设计的初衷以及完成情况,并发布了一个简短的摘要,其中重点包括:
因为Java适用于网络环境,所以从一开始,Java就很注重安全方面,并设计成能够防范各种攻击,其中包括:
众所周知,Java代码一次编译,处处运行,正是因为其源代码(.java)以及生成的字节码文件(.class)是与特定机器无关的,而是都遵守同一种语法规范。
与C和C++不同,Java规范中没有“依赖具体实现”的地方。基本数据类型的大小以及有关运算都做了明确的说明。
Java解释器可以在任何移植了字节码解释器(JVM)的机器上执行Java字节码文件。
尽管对解释执行字节码的速度已经比较满意,但在要求更高效的场合下,字节码可以被JIT动态的翻译成对应当前特定CPU的机器语言,从而进一步提高执行速度。
多线程可以带来更好的交互响应和实时行为。
如今,我们非常关注并发性,因为摩尔定律已经难以维持。我们不再追求更快的处理器,而是更着眼于充分利用当前的处理器资源,并让它尽可能保持工作。
Java相比C和C++更加具有动态性。它可以在正在运行的程序中动态的加载类并执行其代码。一个很好的例子是:从Internet上下载Java代码,然后在浏览器上解释执行。而如果使用C和C++就很难实现动态编译、链接等过程。