1.2 Java的特点
1.简单性
Java是一种简单的程序设计语言。Java的设计者尽量把语言的规模结构缩小,通过提供最基本的方法来完成指定的任务。程序员只需要理解一些基本概念,就可以编写出合适的应用程序。Java语言还选择性地继承了C++语言中的语法规则和面向对象的基本机制,放弃了C++语言中十分烦琐和难以理解的内容,如指针、运算符的重载、类的多重继承,并增加了垃圾回收功能,极大地简化了程序的内存管理工作,降低了编程学习的难度;同时Java编译器很小,便于在各种机型上实现。
2.面向对象
Java语言是一种纯粹的面向对象编程语言,提供类、接口和继承等方法。Java语言中的所有设计集中于对象及其接口上,它提供了简单的类机制和动态的接口模型。对象中封装了变量及方法,实现了模块化和信息隐藏;而类提供了对象的原型。通过继承机制,子类可以使用父类提供的方法,从而实现了代码的复用,并对不断变化的需求有很强的适应性。
3.对象性
Java应用程序可以通过URL地址,在访问网络上任何位置的对象时,实现的效果几乎与本地访问文件系统相同。Servlet机制的出现,使Java编程效率有了很大提高,并且很多大型Web Server都支持Servlet。利用Java来进行分布式网络开发是其主要应用之一。
4.健壮性
Java语言提供了严密的语法规则,在编译和运行时具有独特的检测措施,有效地降低了程序出错的可能性。例如,引用一个非法类型或执行一个非法类型操作,Java将在编译时指出相应的错误。
Java语言提供了面向对象的异常处理机制,在编译时捕获未被处理的异常,防止系统崩溃的发生。Java语言还提供了内存管理功能,能够自动跟踪程序使用的所有资源类型。当内存资源不再使用时能够自动回收,无须用户程序单独进行处理,减少了编程人员在内存管理上的困惑。
5.安全性
由于Java编译器输出的并不是可执行文件(*.exe),而是字节代码(bytecode),Java的运行系统就是Java虚拟机,每个Java程序的运行都是在Java虚拟机的控制之下。因此,下载安全的Java虚拟机是对付病毒入侵和保障程序安全最重要的手段,同时对Java程序进行解释执行的方式也是保证Java程序安全性的一个重要原因。Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止了程序员使用指针等欺骗手段访问对象的私有成员,同时也避免了指针操作中容易出现的错误。此外,在运行程序时有严格的访问权限检查。
6.体系结构中立
Java是一门编译语言,但它不直接生成硬件处理器的指令,而是生成一种与体系结构无关的字节码指令,这种字节码由Java虚拟机解释执行。只要安装了Java运行时环境,Java程序就可以在任意处理器上运行。这些字节码指令对应于Java虚拟机中的表示,Java解释器得到字节码指令后,对它进行转换,使之能够在不同的平台上运行。
7.移植性
移植性即平台无关性,是指一个应用程序能够运行在不同的操作系统平台,也就是Sun公司设计Java的宗旨“Write once,Run anywhere”。此外,Java还严格规定了各个基本数据类型的长度。平台无关性使Java应用程序可以运行在任何操作系统平台上,也是区别于其他高级语言最重要的标志。由于Java虚拟机支持平台无关性,不同的操作系统需要与之相符的Java虚拟机版本。Java提供了可移植的类库,而且,Java编译器是用Java语言编写的,运行时环境由标准C实现。因此,Java系统本身也就具有可移植性。
8.解释性
如前所述,Java运行时环境可以在任何主机上将程序代码编译为Java字节码格式,而字节码本身带有编译时产生的信息,使得程序连接过程更为简单。在运行Java程序时,由Java解释器对这些字节码进行解释执行,执行过程中所需访问的类被动态载入到运行时环境中。
9.高效性
由于Java字节码格式的设计专门针对机器码的转换,自动的寄存器分配与编译器对字节码的一些优化能生成高质量的代码。因此,Java程序可以快速地转换成机器码,直接执行。随着Java虚拟机的改进和即时编译技术JIT(Just In Time)的出现,使得Java的执行速度有了很大提高。
10.多线程
Java的特点之一就是内置了多线程的类库。Java的多线程机制中,每个线程都完成特定的功能和任务,各线程间并发执行,互不影响,并能协调一致地处理和共享数据。通过使用多线程,程序员不需要采用全局的事件循环机制,就很容易实现网络上的实时交互行为。
11.多态性
Java的设计使它适合于一个不断变化的环境。它允许程序动态地装入运行过程中所需的类,并可以自由地向类库中加入新的方法和实例变量而不影响用户程序的执行。Java通过接口来支持多重继承,相比严格的类继承,具有更强的灵活性和可扩展性。这一特点使Java非常适合于网络编程和软件开发,即使是更新类库也不必重新编译。