- Java面向对象程序设计(第3版)
- 杨晓燕 李选平
- 2012字
- 2025-02-22 07:19:31
1.3 Java语言的特点
Java语言是由C++语言发展而来的,是一种彻底的面向对象的程序设计语言。作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发,同时它去掉了C++语言的一些容易引起错误的特性。例如,Java语言没有指针,避免了使用指针直接访问物理寄存器带来的风险,Java取消了运算符重载,以及Java语言用接口代替了C++语言中容易引起混乱的多重继承机制等。Java语言具有如下特点。
1. 面向对象
对象是程序的基本单元和构件。在面向对象的程序语言中,对象是类的实例,而类则是描述对象的模板。类是具有相同属性和服务的一组对象的抽象、一般描述。抽象是事物的泛化,抽象的目的是提取重要的特征而忽略不重要的细节。对象是现实世界中某一个实际存在的事物,软件对象是数据和方法的封装体。类与对象的关系,如同一个模具与用这个模具铸造出来的铸件之间的关系;如同自行车图纸和自行车的关系。
封装是面向对象的一个重要原则。它有两个含义:第一个含义是,把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象);第二个含义也称作“信息隐蔽”,即尽可能隐蔽对象的内部细节,对外形成一个边界(或者形成一道屏障),只保留有限的对外接口使之与外部发生联系。这主要是指对象的外部不能直接的存取对象的属性,只能通过几个允许外部使用的服务(或称方法)与对象发生联系。
2. 跨平台
这里所指的平台是由操作系统(OS)和处理器(CPU)所构成的。跨平台或与平台无关是指应用程序不因操作系统、处理器的变化而导致程序无法运行或出现运行错误。
用Java语言编写的程序,经过Java编译器编译后生成Java语言特有的字节码(Bytecode),而不生成特定的CPU机器代码。字节码是一种中间码,它比机器码更抽象,跨平台性能更好。Java字节代码运行在Java虚拟机JVM(Java语言解释器)上。Java语言借助Java虚拟机,首先对Java编译后生成的字节码进行解释,虚拟机底层的运行系统把字节代码转化成实际的硬件调用,再执行它。
JVM是一种抽象机器,它附着在具体操作系统之上,本身具有一套虚拟机器指令,并有自己的栈、寄存器等。JVM类似一个小巧而高效的CPU,是一个应用程序仿真的软件实现。JVM通常不是在硬件上实现(目前,SUN公司已经设计实现了Java芯片,主要使用在网络计算机上。另外,Java芯片的出现也会使Java更容易嵌入到家用电器中)。Java虚拟机是与硬件、软件平台有关的,它使Java语言程序在某一特定硬件、软件平台环境中直接运行目标代码指令。Java编译出来的字节码与平台无关,这一点正是网络传输所需要的。
Java主要靠JVM在目标代码级实现平台无关性。JVM是Java平台无关的基础,Java源代码先经过Java编译器生成Java虚拟机的字节码,再经过Java解释器将字节码转换成实际系统平台上的机器码,然后真正执行。任何一台机器只要配备了Java解释器,就可以运行字节码,而不管这种字节码是在何种平台上生成的。另外,Java采用基于IEEE标准的数据类型。通过JVM保证数据类型的一致性,也就确保了Java的平台无关性。
3. 安全性
Java将重点用于网络/分布式运算环境,确保建立无病毒且不会被侵入的系统。内存分配及布局由Java运行系统决定,字节码验证可以轻松构建出防病毒、防黑客的系统。
Java最初设计目的是应用于电子类消费产品,要求有较高的可靠性。Java虽然源于C++,但它消除了很多C++不可靠因素,可以防止很多编程错误。首先,Java是强类型的语言,要求显式的方法声明,保证了编译器可以发现方法调用错误,保证程序更加可靠;其次,Java不支持指针,杜绝了内存的非法访问;第三,Java的自动单元收集防止了内存丢失等动态内存分配的问题;第四,Java解释器运行时实施检查,可以发现数组和字符串访问的越界;最后,Java提供了异常处理机制,便于程序即时发现运行错误。
由于Java主要用于网络应用程序开发,因此对安全性有着较高的要求。如果没有安全保证,用户从网络下载程序执行就非常危险。
4. 多线程
线程是操作系统的一种概念,被称为轻量级进程,是比传统进程更小的、可并发执行的单位。C和C++采用单线程体系结构,Java提供了多线程支持。
一个线程是一个程序内部的顺序控制流。在DOS环境下我们只能同时运行一个程序,也就是程序只有一条顺序控制流。当一部分程序因为某种原因不能执行下去的时候,整个程序就停止在那里,其他的操作就不能执行。进程的特点是每个进程都有独立的代码和数据空间,进程切换的开销大。线程是轻量的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器,线程切换的开销小。通常,线程之间的切换是非常迅速的,使人们觉得好像所有的线程都是在同时执行似的。但是在系统内部来看,线程仍是串行执行的,只不过由于操作系统可以快速、自动地进行切换,从而给人一种并发执行的感觉。
多进程指在操作系统中,能同时运行多个任务(程序)。多线程是在同一应用程序中,有多个顺序流同时执行。如果多进程指在操作系统中我们可以同时运行多个任务(程序)的话,那么,多线程就是指在同一应用程序(进程)中我们也可以有多个任务(顺序流)同时执行。多线程的优点是具有更好的交互性以及实时行为。