百度已收录

简单性

Java剔除了许多C++中很少使用、难以理解、容易混淆的特性。

面向对象

简单来说,面向对象设计是一种程序设计技术,重点放在数据(对象)和对象的接口上。面向对象的语言更关注数据,而非面向对象的语言更关注处理数据的方法。
Java诞生的时候,面向对象技术已经相当成熟。Java与C++的主要不同点在于多重继承;Java取而代之的是更简单的接口的概念。与C++相比,Java提供了更丰富的运行时自省功能。

分布式

Java有一个丰富的例程库,用于处理HTTP等TCP/IP协议。

健壮性

Java编译器能检测许多在其它语言中只能在运行时才能够检测出的问题。
Java非常强调进行早期的问题检测、后期动态检测,以及消除容易出错的情况。
Java与C/C++最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性。

安全性

Java要适用于网络/分布式环境,所以安全性颇受重视。使用Java可以构建防病毒、防篡改的系统。
Java能防范的几种攻击手段:

  • 运行时堆栈溢出
  • 破坏自己进程空间之外的内存
  • 未经授权读写文件

体系结构中立

编译器生成的字节码文件是一个体系结构中立的文件格式。只要有JVM就能在很多处理器上运行。
字节码不仅可以在任何机器上解释执行,而且还可以动态地转换成本地机器代码。
JVM还能检查指令序列的行为,从而增强安全性。

可移植性

除了和用户界面有关的部分外,其它Java库能很好的支持平台独立性。
Java的基本数据类型的大小和有关运输的行为都有明确的说明。
例如,Java的int类型永远是32位的整数,而在C/C++中,int可能是16位整数、32位整数,也可能是编译器开发商规定的其它大小,C/C++里唯一规定的是int类型的大小不能低于short类型。
在Java中,数值类型有固定的字节数。二进制数据以固定格式进行存储与传输,消除了字节顺序的困扰。字符串则采用Unicode格式存储。

解释型

Java解释器可以在任何移植了解释器的机器上直接执行Java字节码。

高性能

字节码可以(在运行时)动态地转换成对应运行这个应用的特定CPU的机器码。

多线程

多线程可以带来更快的交互响应和实时行为。Java是第一个支持并发程序设计的主流语言。

动态性

Java相比C/C++来说更具有动态性,它能适应不断发展的环境。库中可以自由地添加新方法和实例变量,而对客户端却没有任何影响。在Java中找出运行时类型信息十分简单。