
1.2 Java语言的特点
Java语言具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java语言可以用来编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
1.简单性
Java语言从某种意义上可看作C++语言的简单版。James Gosling领导的项目组一开始准备采用C++作为编程语言,但在项目推进过程中发现C++语言太过复杂且安全性较差,于是他们抛弃了C++语言中容易引起程序崩溃的指针、指针运算、内存管理,以及难以理解且十分烦琐的运算符重载、类的多重继承、结构、虚基类等。但Java语言还保留了C++语言的优势,许多程序员发现他们可以轻而易举地从C、C++语言开发转换到Java语言开发。Java语言的自动垃圾回收机制也极大地简化了程序设计者对内存管理的工作。Java语言中提供的丰富类库可以使开发者方便快捷地开发程序。
Java语言的简单性还体现在Java语言支持开发能够在小型机器上独立运行的软件系统。目前,Java ME又称为J2ME(Java Platform,Micro Edition),是为机顶盒、移动电话和PDA等嵌入式消费电子设备提供的Java语言平台。
2.面向对象
面向对象是一种符合人类思维习惯的编程思想。现实生活中存在各种不同形态的事物,这些事物之间存在着各种各样的联系。在程序中可以使用对象来映射现实中的事物,也可以使用对象的关系来描述事物之间的联系。面向对象的编程语言具有以下优点。
(1)结构清晰,程序是模块化和结构化的,更加符合人类的思维方式。
(2)易扩展,代码重用率高,可继承、可覆盖,可以设计出低耦合的系统。
(3)易维护,系统低耦合的特点有利于减少程序的后期维护工作量。
(4)Java语言的设计完全是面向对象的,将重点放在数据及其操作方法的接口上,具有面向对象的诸多优势。面向对象的技术使得应用程序的开发变得简单易用、节省代码。
3.分布式
Java有一套强大的通信功能子库,支持HTTP、FTP等TCP/IP协议,使Java具有强大的、易于使用的联网能力。Java应用程序可以像访问本地资源一样方便地访问网络资源,非常适合用于开发分布式计算程序。
Java的分布式包括以下内容。
(1)操作分布,即在多个不同的主机上执行相关操作。
(2)数据分布,即将数据分别布置在不同主机上,这些主机是网络中的不同成员,程序可以方便地访问不同主机上的数据。
4.健壮性
Java语言在进行编译时能检测出许多错误,避免后期问题的累加。另外,Java语言还采用指针模型来消除内存中数据被重写和损毁的可能性。
如果出现某种出乎意料的情况,Java程序也不会崩溃,而是把该异常抛出,再通过异常处理机制加以处理。
5.安全性
Java常用于网络/分布式环境中,为此,Java提供了一个安全机制以抵御恶意代码的攻击。Java摒弃了C、C++语言中的指针,并且一切对内存的访问都必须通过对象的实例来实现,避免了非法内存操作。Java程序代码要经过代码程序校验、指针校验等很多测试步骤才能够运行,因此未经允许的程序不能出现损害系统平台的行为。
6.平台独立与可移植性
Java利用虚拟机解决了因操作系统变化、处理器升级,以及核心系统资源变化带来的问题。大多数编译器产生的目标代码往往只能运行在某种CPU或者某种操作系统上。Java编译器产生的目标代码是运行在一种并不存在的CPU——Java虚拟机(Java Virtual Machine,JVM)上的,在不同的CPU和操作系统环境下,只要安装了Java虚拟机,就可以运行Java程序。
Java编译器生成的字节码可在所有安装了Java虚拟机的系统上运行,与平台无关,由此提高了Java语言的可移植性。同时,Java类库中也实现了与平台无关的接口,使得Java程序即使使用了相关类库也可以方便地进行移植。
7.多线程
单线程可以看作只有一条通道(主路径)可以到达目的地,而多线程则有多条通道可以到达目的地,即有多条执行路径。Java应用程序可以在同一时间并行执行多项任务。而且相应的同步机制可以保证不同线程能够正确地共享数据。多线程带来的更大的好处是更好的交互性能和更强的实时控制能力。
8.动态性
Java语言具有动态性。Java语言的动态性是其面向对象设计方法的扩展,它能适应不断变化的环境,允许程序动态地装入运行过程中所需的类。Java不会因为程序库的某些部分更新而重新编译程序。
总之,Java是一门健壮而安全的开发语言,可以用于快速开发多线程、分布式程序,并且不用考虑具体的程序运行环境。