—- 来源: Java核心技术 卷1 基础知识(第十版)—-

1、简单性

一:Java 语法是C++ 的纯净版,去掉了头文件、指针运算、结构、联合、操作符重载、虚基类等很少使用,难以理解,容易混淆的特性。
二:Java 够小,基本的解释器以及类支持大约仅仅为40kb,再加上基础的标准类库和对线程的支持大约需要增加175kb,它(Java)的目标之一就是支持开发能狗仔小型机器上独立运行的软件

2、面向对象

将重点放在对象(数据)和对象的接口上。用木匠打举一个例子:
“面向对象”的工匠A 始终关注是的所制作的椅子,其次关注的用什么工具制作这个把椅子
“非面向对象”的工匠B 首先考虑的是用什么工具制作这把椅子
本质上,Java 的面向对象能力与C++ 是一样的(不同的是,C++ 多重继承,Java 接口)

3、分布式

Java 有一个丰富的例程库, 用于处理像 HTTP 和 FIT 之类的 TCP/IP 协议。Java 应用程序能够通过 URL 打开和访问网络上的对象, 其便捷程度就好像访问本地文件一样。如今,这一点已经得到认可。
不过在 1995 年, 主要还是从 C++ 或 Visual Basic 程序连接Web 服务器

4、健壮性

Java 编译器能够检测许多其他语言在运行时才能检测出来的问题。(与C++ 不同的是:Java 采用的指针模型可以消除重写内存和损坏数据的可能性)

5、安全性

Java 早期可防范攻击:
运行时堆栈溢出:如蠕虫和病毒常用的手段
破坏自己的进程空间之外的内存
未经授权读写文件

6、体系结构中立

编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码, 只要有Java 运行时系统, 这些编译后的代码可以在许多处理器上运行。Java 编译器通过生成与特定的计算机体系结构无关的字节码指令来实现这一特性。 精心设计的字节码不仅可以很容易地在任何机器上解释执行, 而且还可以动态地翻译成本地机器代码

7、可移植性

Java 中, 数据类型具有固定的大小, 这消除了代码移植时令人头痛的主要问题。 二进制数据以固定的格式进行存储和传输, 消除了字节顺序的困扰。字符串是用标准的 Unicode 格式存储的,除了与用户界面有关的部分外,所有其他 Java 库都能很好地支持平台独立性。 你可以处理文件、 正则表达式、 XML、 日期和时间、 数据库、 网络连接、 线程等, 而不用操心底层操作系统。不仅程序是可移植的,Java API 往往也比原生 API 质量更高。
(在 C/C++ 中, int 可能是 16 位整数、 32 位整数, 也可能是编译器提供商指定的其他大小。唯一的限制只是 int 类型的大小不能低于 short int, 并且不能高于 long int。)

8、解释型

Java 解释器可以在任何移植了解释器的机器上执行 Java 字节码(.class文件)。 由于链接是一个增量式且轻量级的过程, 所以, 开发过程也变得更加快捷, 更加具有探索性

9、高性能

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

10、多线程

我们非常关注并发性, 因为摩尔定律行将完结。我们不再追求更快的处理器, 而是着眼于获得更多的处理器, 而且要让它们一直保持工作。Java 在当时很超前。 它是第一个支持并发程序设计的主流语言。

11、动态性

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