1、JAVA白皮书关键术语Oracle白皮书地址1996.05
1.1、简单性
Java删除了cpp中许多很少使用、难以理解、容易混淆的特性,如指针、操作符重载等。在我们看来,这些特性带来的麻烦远远多于他们的好处。可以认为Java是cpp的简化纯净版。
1.2、面向对象
面向对象设计是一种程序设计技术。当然,在使用得当的时候,我更愿意称之为程序设计的艺术。Java将面向对象这条路走向了极致,甚至将程序入口main()都设计在类中,也就是说,Java是完全面向对象的。而cpp实际上可以认为是c的超集,这也就意味着当你想要编写完全贯彻落实程序设计艺术原则的cpp程序几乎是不可能的,面向结构设计的c风格代码很难不出现在你的项目中。Java在吸收了面向对象的优秀程序设计方法的同时,也取消了cpp中诸如多继承、虚基类、虚函数、纯虚函数、友元等复杂的设计方法转而统一使用接口来替代。
Java语言的设计,总体来讲就是取cpp精华,弃cpp糟粕。最早的java由于虚拟机本身问题和硬件发展水平限制运行速度上令人诟病,但随着软硬件的不断发展,如今几乎与cpp在运行速度上没什么太大区别,甚至使用java编写的程序也可以直接编译为二进制包,也就是说我们几乎可以忽略因为解释字节码带来的程序运行效率上的问题。
1.3、分布式
Java是一种平台无关的编程语言,具有“一次编写,处处运行”的特点,所以非常适合网络编程。可以说,在网络编程方面没有任何一门语言比java更优秀。同时由于其拥有大量优秀的类库和开源框架,如dubbo、spring等,其他语言几乎无法与之媲美。
1.4、健壮性
java自己管理内存,且拥有完善的异常处理机制。1、在编写代码的过程中,无需担心由于指针引发的bug,这大大降低了编码的难度,同时,你能够很容易的捕获异常发生的位置,快速解决问题。2、使用优秀的第三方日志工具通过注解甚至可以不侵入源代码,轻松记录程序运行中的关键信息。3、活跃的社区可以保证第三方库和框架的长期维护,只需要更新依赖版本,可以在不改动源代码的情况下,让你的程序性能不知不觉的提升。
1.5、安全性
Java可以构建防病毒、防篡改的系统。防范的攻击包括:运行时堆栈溢出、这是蠕虫和病毒常用的攻击手段;破坏自己的进程空间之外的内存;未经授权读写文件。
1.6、体系结构中立
编译器为java源程序生成.class字节码。字节码是在jvm上解释执行的,java程序可以运行在安装了jvm环境的机器上。
1.7、可移植性
Java使用统一规范,基本数据类型的大小与运算有明确的规定,不因为运行环境不同而有所不同。
1.8、解释型
Java解释器可以在任何移植了解释器的机器上直接执行Java字节码。
1.9、高性能
字节码可以在运行时动态地转换为对应运行这个应用的特定CPU机器码。现在的即时编译器已经非常出色,可以与传统编译器相媲美,甚至在某些情况下甚至超越了传统编译器,因为他们有更多的可用信息。例如,即时编译器可以监控被频繁执行的代码,并优化这些代码提高速度。也就是说,代码编写完成后,随着编译器的不断更新优化,性能在无声无息的提升。
1.10、多线程
多线程可以带来更快的交互响应和实时行为。而Java是第一个支持并发程序设计的主流语言。Java在多线程方面表现的很出色。Java语言本身具有的多线程类库对并发的支持如线程池、NIO、Concurrent等都是非常优秀的多线程编程工具。由Java开发的开源框架如Netty、Spring等更是隐藏了多线程编程的复杂性。
1.11、动态性
JAVA可以为正在运行的程序增加代码。一个很好的例子是:从Internet 下载代码,然后在浏览器上运行。