1.1 概述
Java 不仅仅是一门编程语言,还是一个有一系列计算机软件和规范形成的技术体系.
1.2 Java 技术体系
Sun 官方定义的Java技术体系:
- Java 程序设计语言
- 各种硬件平台上的Java虚拟机
- Class 文件格式
- Java API 类库
- 来自商业机构和开源社区的第三方Java类库
JDK(Java Development Kit): Java程序设计语言 + Java 虚拟机 + Java API类库
JDK 是用于支持Java程序开发的最小开发环境.
JRE(Java Runtime Environment): Java API中 Java SE API 子集 + Java 虚拟机
JRE 是支持Java 程序运行的标准环境.
上面是按照各个组成部分的功能来划分,如果按照技术关注的重点业务领域来划分,可以分为以下4个平台:
- Java Card: 支持一些Java 小程序(Applets)运行在小内存设备上的平台
- Java ME(Micro Edition): 支持Java程序运行在移动终端, 对Java API 有所精简
- Java SE(Standard Edition): 支持面向桌面级应用的Java平台,提供完整的Java 核心API
- Java EE(Enterprise Edition):支持使用多层架构的企业应用的Java平台.
1.3 Java 发展史
- 1991.4 绿色计划:Oak
- 1995.5.23 Oka 改名为Java, 第一次提出:"Wirte Once, Run Anywhere"
- 1996.1.23 JDK1.0, 第一个正式版本的运行环境,JDK1.0 提供一个纯解释执行的Java虚拟机(Sun Classic VM)
- 1996.4 10个最主要的操作系统供应商申明将在其产品中嵌入Java 技术
- 1997.2.19 Sun 公司发布 JDK1.1: JAR文件格式,JDBC,JavaBeans, RMI. 新增加的语法: 内部类,反射
- 1998.12.4 JDK 1.2, EJB, Java plug-in,Java IDL, Swing. 新增strictfp和集合类. 将Java体系拆为3个
- 1 J2SE(Java 2 Platform, Standard Edition)--桌面应
- 2 J2EE(Java 2 Platform, Enterprise Edition) -- 企业级开发
- 3 J2ME(Java 2 Platform, Micro Edition) -- 移动终端开发
- 1999.4.27 发布HotSpot VM, 由 1997 Sun 收购 Longview Technologies 而来. 作为JDK1.2的附加程序
- 2000.5.8 JDK 1.3, HotSpot 为默认虚拟机, 相对于JDK1.2, 主要是类库的改变,JNDI开始作为平台级服务.Java 2D API改进, Java Sound类库, 之后大约每隔两年发布一个JDK的主版本,以动物命名,期间的修正版本以昆虫命名.
- 2002.2.13 JDK 1.4 , 走向成熟的一个版本.新特性: **正则表达式, 异常链, NIO, 日志类, XML解析器和 XSLT转换器. **
- 2004.9.30 JDK 1.5
- 1 语法易用性: 自动装箱,泛型,动态注解,枚举,可变长参数,遍历循环.
- 2 虚拟机和API: Java的内存模型的改进(Java Menory Model, JMM), 提供java.util.concurrent并发包
- 2006.12.11 JDK 1.6 Sun 终结了从JDK1.2开始已经有8年历史的J2EE, J2SE, J2ME命名,启用 Java SE6, Java EE6, Java ME6命名. JDK1.6的改进:
- 1 提供动态语言支持(通过内置Mozilla JavaScript Rhino引擎)
- 2 提供编译API和微型HTTp服务器API
- 3 Java 虚拟机:锁与同步, 垃圾收集,类加载等方面的算法
- 2006.11.13 Sun 公司宣布将Java 开源, 并建立OpenJDK组织对源码进行独立管理. OpenJDK 几乎包括了Sun JDK的全部代码. 在JDK1.7中, Sun JDK 和 OpenJDK 除了代码头文件的版权注释外,代码基本完全一样,所有 OpenJDK 7 与 Sun JDK 1.7 本质上就是同一套代码库开发的产品.
- JDK1.7 设置了10个里程碑,但由于各种原因未能按计划完成. 在JDK1.7开发期间,Sun公司因为在技术竞争和商业竞争中陷入泥潭,无力推动JDK的研发工作,Oricle 公司收购后宣布"B计划", 将原本计划在JDK1.7实现的Lambda,Jigsaw和Coin项目延迟到 JDK1.8. 最后,JDK1.7的改进: 提供新的G1收集器, 加强对非Java语言的调用支持, 升级类加载架构.
1.4 Java 虚拟机发展史
1.4.1 Sun Classic / Exact VM
1.4.2 Sun HotSpot VM
是Sun JDK 和 OpenJDK 中所带的JVM, 目前使用最广泛的虚拟机,最初由 longview technologies 公司设计,1997年被Sun公司收购.
HotSpot VM 的热点代码探测能力可以通过执行计数器找出最具有编译价值的代码,然后通知JIT编译器以方法为单位进行编译.
在最优化的程序响应时间与最佳执行性能中取得平衡.
2008-2009年,Oracle分别收购了BEA公司和Sun公司,这样Oracle就同时拥有了两款优秀的虚拟机:JRockit VM 和 HotSpot VM, 在HotSpot的基础上, 移植JRockit的优秀特性.例如JRockit的垃圾回收器和MissionControl服务, HotSpot的JIT编译器与混合的运行时系统.
1.4.3 Sun Mobile-Embedded VM / Meta-Circular VM
1.4.4 BEA JRockit/ IBM J9 VM
1.4.4 Azul Vm / BEA Liquid VM
1.4.6 Apache Harmony / Google Android Dalvik VM
1.4.7 Microsoft JVM
1.5 展望Java技术的未来
1.5.1 模块化
1.5.2 混合语言
1.5.3 多核并行
1.5.4 进一步丰富语法
1.5.5 64位虚拟机
1.6 实战: 自己编译SDK
1.7 本章小结
本章介绍了Java技术体系的过去,现在以及未来的一些发展趋势,以及自己编译JDK. 在了解Java技术的来龙去脉后,后面的章节将分为4部分来介绍Java在
内存管理,Class文件结构与执行引擎,编译器优化以及多线程并发方面的实现原理.