Java语言设计的目标
来虽然催生Java的源动力是可移植性和安全性,但是在其终成型的过程中其他因素也起了重要作用,下面是Java开发小组总结的Java的关键特性(设计目标):
(1)简单(Simple)——易学好用,继承了C/C++的语法和许多C++的面向对象特征。去掉了C++中的一些复杂困难的东西(如头文件、预处理、结构、联合、多重继承、操作符重载、[模板]等),使语言更加精简。
(2)安全(Secure)——为了适应分布式网络环境,采用基于策略(policy)的沙箱(sandbox)模型,在语言层次上实现了安全性。具有如下三个方面的安全增加:语言特性(包括检查数组边界、限制类型转换、取消指针变量等)、资源访问控制(包括本地文件系统访问和连接访问网络等)和代码数字签名(通过数字签名确认源代码源以及代码是否完整)。
(3)可移植(Portable)——定长的整数型类型,如int始终为32位,而C/C++中的int在Win16、Win32和Win64平台上分别为16位、32位和64位。固定的多字节整数二进制格式,采用统一的高位字节在前的方案(Intel CPU中的多字节整数的低位字节在前)。统一的用户界面(AWT/Swing [/SWT])。
(4)面向对象(Object Oriented)——由于没有设计C++时兼容C的负担,从零开始设计的Java具有更纯洁的OOP特性。但是为了高性能,仍然保留了基本数据类型的非对象性。在OOP方面与C++的区别主要有单一类继承、接口、反射等。
(5)健壮(Robust)——异构网络环境要求程序可靠运行。采用的措施有:避免内存错误(取消指针变量、提供内存管理——自动分配和释放内存[垃圾内存自动回收])、强制异常处理等,可对潜在的问题进行早期和动态的检查。
(6)多线程(Multithreaded)——交互式网络化的多任务程序(如Web服务器)及多核CPU都要求多线程。Java提供了语言级的多线程支持,JVM也具有成熟的线程同步解决方案。
(7)体系结构中立(Architecture Neutral)——通过JVM和字节码,Java实现了体系结构中立(与计算机硬件和操作系统无关)。跨平台是Java重要的特征和大的优点,“一次编写、到处运行”(Write Once, Run Anywhere,WORA)是Java的口号。正是跨平台的特点,使得Java语言特别适合于网络编程。
(8)解释型(Interpreted)——与Fortran、Pascal、C/C++等编译型语言不同,Java是一种(编译性)解释语言:Java语言的源程序(*.java),先通过Java编译器编译成特殊的字节码(*.class),然后由目标机上JVM将字节码解释(翻译成本机CPU指令代码)执行。解释型是JVM的需要,也是跨平台的基础。
(9)高性能(High Performance)——与追求速度的编译型语言相比,解释型语言在本质上是低性能的,这也是Java语言跨平台的代价。为了克服Java程序运行慢的缺点,可用JIT(Just-In-Time,及时)编译器,在程序的次运行时将(部分)字节码先转换成本机代码,以提高Java程序的运行速度。
(10)分布式(Distributed)或理解网络(Network-Savvy)——Java是为因特网的分布式环境设计的,所以它支持TCP/IP协议、URL资源访问和RMI(Remote Method Invocation,远程方法调用)。
(11)动态(Dynamic)——Java程序带有大量运行时的类型信息,用于在运行时的验证和解决对象的访问问题。这使得在安全有效的方式下动态连接代码成为可能。程序员可从因特网上下载代码运行(浏览器),可全面控制对象的行为,如在特定的系统要求下,在运行时分析对象(如GUI构建器、智能调试器、可插式组件、对象数据库等)。
Java语言主要优势是跨平台和安全(及类库丰富),主要缺点是运行速度慢和图形界面较差,主要适用范围是(服务器端的)网络编程。
下一篇:计算机是如何执行程序的