1.1 Java语言概述
Java语言是世界上第一种纯粹的面向对象编程语言,其本身的产生与发展注定了它在现今软件编程领域的主流地位。
1.1.1 Java语言的产生
1991年4月Sun公司推动了一个绿色项目(Green Project),该项目旨在推出一种可以为家用消费电子类产品开发的一个分布式代码系统,这样可以对电冰箱、电视机等家用电器进行控制和信息交流。
项目开始时,准备采用C++语言,但C++对于家用消费电子类产品的嵌入式编程而言,细微的硬件变化都意味着软件要做大量的改动,而这种分布式系统上将面临多种硬件平台,这使得软件编程变得极为复杂。最后该项目基于C++开发了一种新的语言,其最大的优势在于跨平台,可做到“编写一次,随处运行(Writing Once, Running Everywhere)”。语言的创建者James Gosling将该语言命名为Oak(橡树),后来得知该名称和其他语言重名,其他开发人员在咖啡屋休息时得到灵感,建议使用Java这个名字,该名字得到了认同并沿用至今。
但是这个项目在开发过程中困难重重,由于智能化电子消费设备的市场并不像Sun公司所预期的那样发展迅速,该项目面临着被取消的危险。值得庆幸的是,1993年,随着Internet的迅速兴起,开发人员立即发现了有着跨平台优势的Java在该领域的巨大潜力,利用它可以在网页上添加交互操作和动画等动态内容,而不必考虑网页运行的客户端运行环境的差异。
经过对原来语言的进一步调整和优化,Sun公司在1995年5月正式对外发布了Java语言。由于当时业界对于Internet的浓厚兴趣,Java迅速得到了广泛的关注和应用。
1.1.2 Java语言的发展
Java自1995年公布第一个版本以来,其经过了数次大的变革与发展,其主要的发展过程,如表1.1所示。
表1.1 Java语言发展历史
1.1.3 Java语言的特性
Java从产生至今已经有了将近20年的发展历史,最初设计时其就具有一些优良的特性,这些特性被很好地保持并发展到了今天,这些特性如下。
❑ 简单性:Java是一种基于C++产生的语言,其语法上继承了C++的风格,但是它比C++要简单很多,它去掉了一些复杂和容易混淆的概念。如无指针概念,不支持多重继承与运算符重载等。
❑ 面向对象:Java彻底全面地应用了面向对象的设计思路,它是完全彻底支持面向对象的,但其保持了简单类型非“纯面向对象”语言,兼顾了程序运行的效率。
❑ 健壮:Java是严格的强类型语言,在编译和程序执行时都进行代码检查,可避免一些通常难以追踪的错误。同时非常好的故障追踪和处理机制,也保障了其程序运行的健壮性,如对象的垃圾回收机制、错误异常处理机制等。
❑ 多线程:Java对于多线程的支持是最基本的特性之一,在很多之前的编程语言中,多线程编程往往非常复杂,但是Java实现多线程编程非常简单,程序员在编码时不必关心后台的复杂实现。
❑ 跨平台:Java在最初的时候就是被设计成跨平台的,这个特性被很好地保持和发扬。到目前为止,主流软件编程语言中,也只有Java语言可以做到在多个平台系统下“编写一次,随处运行”。当然在具体的程序实现时,还是会遇到一些问题,在早期也曾有程序员称Java是“一次编写,到处错误”,随着不断的完善和改进这种说法已经很少有人提及了。
❑ 解释性:Java是解释执行的语言,但是有别于传统的解释执行语言,程序源码编写完后,先要进行“预编译”,但是结果并不是操作系统可以直接识别运行的二进制机器码,而是Java虚拟机能够识别解释执行的二进制字节码。当然,这也是Java能够跨平台的秘密所在,即不同的系统环境中安装了相应的Java虚拟机,便可以解释执行相同的Java字节码了。
❑ 高性能:Java作为解释执行的语言,其运行的效率一直是人们广为关注的问题,其运行速度明显低于编译语言,特别是在桌面应用系统中,这应该算是Java的一个弱点。在这里,还说Java是高性能的,原因是在于它的“预编译”机制,这使得它比传统的解释执行的语言性能要高很多,同时Java在性能上不断提升优化,包括计算机硬件性能的提升,都使得Java系统在性能表现上还令人满意。
❑ 分布式:Java在一开始就是被设计成用来实现分布式系统的,所以分布式是Java的本质特点之一。Java支持网络编程、RMI分布对象、CORBA等,应该说Java基本能够与所有主流的分布式设计技术进行交互,因此Java也常常被用来作为企业系统集成的首选技术。
❑ 动态性:Java语言的动态性是与其适应的复杂网络应用环境有关的,在很多情况下,运行的代码是在运行期动态加载的。因此Java程序运行时,虚拟机会管理多种运行信息,运行时对对象进行检查,控制对象访问,可安全有效地在运行时动态连接代码。