一、 java优点
- 摆脱了硬件平台的束缚,实现了“一次编写,到处运行”的理想;
- 提供了一个相对安全的内存管理和访问机制,避免了绝大部分的内存泄露和指针越界问题;
- 实现了热点代码检测和运行时编译及优化,这使得Java应用能随着运行时间的增加而获得更高的性能;
- 有一套完善的应用程序接口,还有无数来自商业机构和开源社区的第三方类库来帮助它实现各种各样的功能
二、java技术体系
Java程序设计语言
各种意见平台上的Java虚拟机
Class文件格式
Java API类库
来自商业机构和开源社区的第三方Java类库
Java语言、Java虚拟机、Java API统称为JDK
三、各个版本的Java的代表技术
JDK 1.0: Java虚拟机(纯解释执行)、Applet、AWT
JDK 1.1(最基础的支撑点):JAR文件格式、JDBC、JavaBeans、RMI、内部类、反射
JDK 1.2(里程碑式的版本):分成三个版本(J2SE、J2EE、J2ME),EJB、Java Plug-in、Java IDL、Swing等,java虚拟机第一次内置JIT(Just In Time)编译器。新增strictfp关键字,和Collections集合
JDK 1.3:类库上的改进、将JNDI作为平台级服务、COBAR IIOP实现RMI,对Java 2D改进、增加JavaSound类库
JDK 1.4:正则表达式、异常链、NIO、日志类、XML解析器和XSTL转换器
JDK 1.5:自动装箱、泛型、动态注解、枚举、可变长参数、循环遍历(foreach循环)、java内存模型的改进、提供java.util.concurrent并发包
JDK 1.6:提供动态语言支持(内置Mozilla JavaScript Rhino引擎)、提供编译API和微型HTTP服务器API和大量改进(锁与同步、垃圾收集、类加载方式),JDK开源
JDK 1.7:switch支持字符串、泛型实例化类型自动推断、Boolean类型反转,空指针安全、参与位运算、两个char间的equals 、安全加减乘除
JDK 1.8:接口的默认方法(允许在接口中包含方法实现,使用 default关键字)、Lambda 表达式、函数式接口、方法与构造函数引用、Lambda 作用域、访问局部变量、访问对象字段与静态变量、访问接口的默认方法、Date API、Annotation 注解
四、Java虚拟机
1、Classic VM / Extra VM
Classic Vm:纯解释器,不能进行JIT编译,需要外挂JIT编译器(sunwjit、Symantec JIT、shuJIT等)
Extra VM:具有现代高新能虚拟机的雏形(两级即时编译、编译器与解释器混合工作模式),他因准确式内存管理(Extra Memory Management)得名
2、HotSpot VM
3、Sun Mobile-Embedded VM / Meta-Circular VM
还有一些用于研究或作为一些规范的标准实现:KVM,CDC / CLDC HotSpot Implementation,Squawk VM, JavaInJava, Maxine VM
4、BEA JRockit / IBM J9 VM
5、Azul VM / BEA Liquid VM
特定硬件平台上的虚拟机
6、Apache Harmony / Google Android Dalvik VM
7、Microsoft JVM 及其他
其他的虚拟机:JamVM,cacaovm,SableVm,Kaffe,Jelatine JVM,NanoVm,MRP,Moxie JVM,Jikes RVM