1、java技术体系:
- ①java程序设计语言
- ②各种硬件平台上的java虚拟机
- ③Class文件格式
- ④Java API类库
- ⑤来自商业机构的开源社区的第三方Java类库
①②④这三部分统称为JDK(Java Developme Kit),JDK是用于支持java程序开发的最小环境。
将④中的Java SE API子集和②这两部分统称为JRE(Java Runtime Environment),JRE是支持java程序运行的标准环境。
按照技术服务的领域来分,java技术体系分为4个平台:Java Card(小内存设备)、Java ME(移动终端)、Java SE(桌面级应用)、Java EE(企业级应用)。
2、java发展史(主要阶段)
- 1996年1月23日,JDK1.0发布,代表技术包括:java虚拟机、Applet、AWT等等;
- 1998年12月4日,JDK1.2发布,将java技术体系拆分为3个方向:支持java程序运行在移动终端平台上的Java ME(Micro Edition) 、支持面向桌面级应用的Java SE(Standard Edition)、支持使用多层架构的企业级应用平台的Java EE(Enterprise Edition)。
- 2004年9月30日,JDK1.5发布,在java语法易用性上作出非常大的改进:自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环等。
- 2013年9月,JDK1.8发布,加入了Lambda表达式等内容。
3、JVM的生命周期
- ①虚拟机的启动:Java虚拟机的启动是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的。
- ②虚拟机的执行:一个运行中的Java虚拟机有着一个清晰的任务,即执行Java程序;程序开始执行时它才运行,程序结束时它就停止;执行一个Java程序时,真正执行的是一个叫做Java虚拟机的进程。
- ③虚拟机的退出:程序正常执行结束;程序在执行过程中遇到异常或错误而异常终止;由于操作系统出现错误而导致Java虚拟机进程终止;某线程调用Runtime类或System类的exit方法,或Runtime类的halt方法,并且Java安全管理器也允许这次exit或halt操作。
4、JVM发展史(主要阶段)
- Sun Classic VM:1996年1月23日,JDK1.0发布所带,世界上第一款商用Java虚拟机。内部只提供解释器,如果要使用JIT编译器,就必须外挂,但是一旦使用编译器,JIT就会接管虚拟机的执行系统。解释器就不再工作。解释器和编译器不能配合工作。
- Exact VM:1998年12月4日,JDK1.2发布所带,它可以知道内存中某个位置的数据具体是什么类型。具备现代高性能虚拟机的雏形(热点探测,编译器与解释器混合工作模式),只在Solaris平台短暂使用就被Hotspot虚拟机替换。
- Hostpot VM:JDK1.3发布时成为默认虚拟机,目前占有绝对的市场地位,从服务器、桌面到移动端、嵌入式都有应用。hotspot指的就是它的热点代码探测技术,它的热点代码探测能力可以通过执行计数器找出最具有编译价值的代码,然后通知JIT编译器以方法为单位进行编译。通过编译器与解释器恰当的协同工作,可以在最优化的程序响应时间与最佳执行性能中取得平衡。
- BEA的JRockit VM:专注于服务器端应用,可以不太关注程序启动速度,因此内部不包含解析器实现,是世界上最快的虚拟机。
- IBM的J9 VM:市场定位与Hotspot接近,服务器端、桌面应用、嵌入式等多用途VM,与前两个并称三大商用虚拟机。