简单性
Java的简单性表现在两个方面
第一个方面:Java的语法较为简单,相当于是C++的纯净版,没有头文件,指针运算等等。
第二个方面:Java比较小,在以前,装配基本的类库也只需要175KB,在当时是个了不起的成就。在如今类库已经相当庞大但是也有一个较小类库的,适用于嵌入式设备的Java微型版。
面向对象
在开发Java的时候,面向对象技术已经相当成熟,Java的面向对象特性和C++旗鼓相当。Java和C++的不同点主要在于多重继承,Java使用接口取代了多继承原本的功能。
分布式
Java拥有一个例程库来处理TCP/IP协议。Java的应用程序能够通过URT打开和访问网络上的对象,其便捷程度相当于打开本地文件一样。
如今,这种特性被视为理所当然的。不过在1995年,这种特性任然很新颖。
健壮性
Java强调进行早期问题检测,后期动态的检测,以及消除容易出错的情况。
Java和C++最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性。
Java编译器能够识别很多语言仅仅在运行时才会发现的问题。
安全性
Java可以构建防病毒,防篡改的系统。
防范的内容包括:
-
运行时堆栈溢出,这是蠕虫和病毒常用的手段。
-
破坏自己的进程空间之外的内存。
-
未经授权读写文件。
现如今,Java浏览器插件不再信任远程代码,厨卫代码有数字签名而且用户统一执行这个代码。
体系结构中立
编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码,可以在很多机器上直接执行,也可以动态的转换为本地机器代码。
解释性虚拟机的执行速度可定回避全速运行机器指令要慢,但是Java的虚拟机可以将执行最平凡的字节序列转换成机器码,这一过程称为即时编译。
Java虚拟机还有其他优点,可以检查指令徐璐i额的行为,从而增强其安全性等等。
可移植性
与C/C++不同,Java的规范中没有“依赖具体实现”的地方。基本数据类型的大小以及有关运算的行为都有明确的规范——这成为了Java可移植性的基石之一。
-
Java有固定的字节数,消除了代码移植时一个令人头疼的主要问题。
-
二进制数据以固定的格式进行存储和传输,消除了字节顺序的困扰。
-
字符串采用标准的 Unicode 格式存储
-
作为系统组成部分的类库,定义了可移植性的接口
除了与用户界面有关的部分外,所有其他Java库确实能很好的支持平台独立性。
不仅程序是可以指的,Java API往往也比原生API质量更高
解释型
Java解释器可以在任何移植了解释器的机器上直接执行Java字节码
高性能
Java字节码可以(在运行时)动态地转换成对应运行这个特定CPU地机器码。
现在地即时编译器已经非常出色,可以与传统编译器相媲美,而且在某些情况下甚至超越了传统编译器,原因是他们有更多的可用信息。
多线程
多线程可以带来更快的交互响应和实时行为
摩尔定律即将走向尽头,我们不再执着于更快的处理器,而是采用多个处理器,而且让它们一直保持着工作。
Java是当时第一个支持并发程序设计地主流语言。
动态性
Java库中可以自由地添加新方法和实例变量,而对客户端没有任何影响。
当需要为正在运行的程序增加代码地时候,动态性是一个非常重要地特性。