1.1 Java 程序设计平台
赏心悦目的语法,易于理解的语义
庞大的库功能齐全的执行环境。
考虑到兼容现有环境,也有一些累赘保留下来
它是一种功能齐全的出色语言, 是一个高质量的执行环境, 还提供了一个庞大的库
Java白皮书
简单性:Java剔除了c加加中的累赘语法(但同时具有大型的功能齐全的库)
Java的目标之一是可运行于小型独立机器的程序。其解释器以及基本类仅为40kb,
基本标准类库加上线程支持为175kb
嵌入式的Java micro edition更小
面向对象:面向对象是一种成熟的技术,Java与c加加旗鼓相当。
但Java使用更为简单的接口概念实现多重继承
运行时,Java也有更为丰富的自省功能
分布式:Java有一个丰富的例程库,用于处理网络协议,使Java程序非常便捷地访问网络文件
健壮性:Java投入大量精力进行早期和后期(运行时)问题检测,Java编译器能检测出许多其他语
言运行时才能发现的问题
Java的指针模型消除了重写内存损坏数据的可能性
安全性:Java为适用分布式,网络环境,在安全性上投入大量精力,防范:运行 破坏自己进程空间之外的内存 无授权读写文件
任何Java代码都无法离开沙箱
虽然没有想象得难么成功,但确实非常超前(在当时)
Java程序开发现在更加谨慎,不再信任远程代码(除非数字签名和用户同意)
体系结构中立:编译器生成与特定计算机体系无关的字节码文件,在不同体系的Java系统解释执行,
也可动态地将部分代码翻译成本地系统语言,提高执行效率
虚拟机技术非Java首创
Java虚拟机还可以监测指令序列的行为,增强安全性
可移植性:Java规范不依赖具体实现
数据类型大小不变,解决了代码移植的主要问题
二进制数据传输格式固定,解决了字节顺序问题
字符串使用标准unicode格式存储
除了用户界面方面力有未逮,Java库在其他功能上不必担心不同系统的底层
且Java的api往往比原生api质量更高applicationprogramminginterface
解释型:虚拟机技术的特色,代码的使用是一种轻量级,增量式过程,使开发快捷可探索。
高效率:解释后的字节码性能已经令人满意
但为了更高效率,字节码可在运行时动态地翻译成特定cpu机器码
现在即时编译器已经具有很高性能,却比传统编译器提供更多信息,实现更多功能
比如监控常用代码,进行速度优化。
更为复杂的优化,消除函数调用,即时内联
多线程:Java是第一个支持多线程的主流语言,在当时很超前
但开始是因为网络响应慢,多线程以保证用户界面不会冻住
现在则因为摩尔定律行将完结,我们不追求更快而是更多的处理器
多线程带来更好的相应交互和实时行为,
虽然多线程程序设计不易,但Java在这方面很重视且出色
动态性:Java更加具有动态性,能适应不断发展的环境
Java可以向库中添加新方法,实例变量而不影响客户端
Java很容易找出运行中的类型信息
当需要将代码添加到正在运行的程序中时,动态性很重要
为便于运行程序的演进,Java设计者将此特性引入主流程序设计语言