Java 绪论

 Java的特点

        Java是一种简单、面向对象、不依赖于机器的结构,具有可移植性、鲁棒性、安全性;Java语言最大限度地利用了网络,Java的小应用程序(Applet)可在网络上传输而不受CPU和环境的限制;Java还提供了丰富的类库,使程序员可以很方便地建立自己的系统。“Whrite once,run anywhere”一直是Java程序员的精神指南。

(1)简单性 

        Java语言通过提供最基本的方法来完成任务,摒弃了C++中容易引发程序错误的机制(如指针和内存管理),略去了很多不常用的概念;

(2)面向对象 

面向对象的方法基于 信息隐藏数据类型抽象 的概念,利用 对象 的机制将数据和方法封装在一起,通过统一的接口与外界交互,通过类的继承机制实现代码重用。Java语言只支持单继承,却支持多接口,另外还支持方法重载和动态调用。总之,Java语言支持面向对象方法中的三个基本特性:封装性、继承性和多态性。面向对象方法反应了客观世界中现实的实体在程序中的独立性和继承性,有利于提高程序的可维护性和可重用性,还有利于提高软件的开发效率和程序的可管理性。Java语言是完全面向对象的程序设计语言。

(3)体系结构中立、可移植

a.  Java语言规定,同一种数据类型 在各种实现中 占据相同的内存空间,如 short型为16位,int型为32位,long型为64位,保证了其程序的平台独立性。

b. Java程序的最终实现要经过编译和解释两步。Java的编译器生成的可执行代码——字节码,可在任何一个提供Java虚拟机(JVM,Java Virtual Machine)的系统上解释运行,因为在JVM上有一个 Java解释器 来 解释产生的字节码。Java语言的这种先编译后解释的方法是以牺牲执行速度来换取与平台无关的,从而提高了可移植性。

(4)鲁棒性

鲁棒性反映了程序的可靠性。Java几个内置的特性使程序的可靠性得到改进:

a. Java是强类型语言。编译器和类载入器保证所有方法调用的正确性,防止隐式类版本的不兼容性。

b. Java没有指针,不可能引用内存指针搞乱内存或数组越界访问。

c. Java进行自动内存回收,无法意外释放内存,不需要判断在何处释放。

d. Java在编译和运行时,都要对可能出现的问题进行检查,以消除错误的产生;在编译时还可揭示出可能出现但尚未被处理的异常,以防系统崩溃。

(5) 安全性

Java安全性最重要的保证来自字节码检验器,在字节码进行解释执行前,字节码检验器先通过一个规则验证程序对每个代码段作安全检测。

内存布局由JVM决定,并依赖于Java运行时系统和JVM所在宿主机平台的特性实现内存管理的自动化。一方面,Java不允许程序员强制性地使用内存指针来访问内存,减少许多内存出错的可能;另一方面,编译器也没有对内存布局的决定权,编译后的字节码中保留了表示内存的符号引用信息,但不使用具体的数字来指定内存的位置,也就是说,Java吧内存分配权交给运行平台,最终的内存布局是由具体运行系统所在软硬件平台决定的;此外,类装载器在装载字节码时,将本地的类组成一个统一的空间,将外来的类组成另一个空间,以使后者不能对前者进行操作,即为本地类建立了一种比较安全的屏障。Java还利用原始沙箱模型,严格控制代码的访问权限。

(6)高性能

a.  为使该语言可在不同平台使用,采取了一种中性结构方式,主要表现为字节码的中介方式,它的生成与平台无关。

b. 高级语言通常分两种:一种是面向机器的编译型语言,执行效率高,诞可移植性差;另一种是解释型语言,编程效率高,但执行速度慢。Java语言先编译后执行,介于两者之间。为提高解释执行的速度,Java解释器普遍采用了即时编译技术,把字节码转换成对应于特定CPU的机器码并缓存,当再次运行该段字节码时,可直接采用已经缓存的机器码执行。

c. 操作系统两个重要的概念是进程和线程。进程的特点是在执行过程中拥有自己独立的内存空间和系统资源,不同进程的内存数据和状态是彼此独立的。线程在执行过程中共享一块内存空间和一组系统资源,线程之间可以直接进行数据交换。因此,线程比进程的开销要小。多个线程并行执行,类似于多个CPU在同时运行。Java语言支持多线程。

(7)动态性

这种特性使Java程序能够适应不断变化的执行环境。“滞后联编”机制使得Java完全利用了面向对象编程模式的优点。Java程序的基本组成单元为类,这些类是在运行过程中动态装载的。因此,Java可以在分布式环境中动态地维护应用程序及其支持类库之间的一致性 ,这样,对于Java而言,在类库中可以自由地加入新的方法和实例变量而不会影响到原来使用该类的程序的运行。其支持的类库升级之后,相应的应用程序不必重新编译,也可以利用升级后类库的新增功能。

Java 绪论