java体系
java不仅仅是一门编程语言,还是由一系列计算机软件和规范形成的技术体系。
这个体系提供了完整的用于软件开发和跨平台部署的支持环境。
Sun官方定义的java技术体系包括以下内容:
- java程序设计语言
- 各硬件平台上的java虚拟机(jvm)
- Class文件格式
- java api类库
- 来自商业机构和开源社区的第三方类库
以上1、2、4点统称为jdk,jdk是支持java程序开发的最小环境.
java api中的java se api子集和java虚拟机统称为jre,jre是java程序运行的最小环境.
java除了一门优秀的编程语言外,还有许多不可忽视的优点:
- 摆脱硬件平台束缚,实现跨平台
- 内存管理,避免绝大部分内存泄露和指针越界问题
- 热点代码检测和运行时编译及优化
- 完善的应用程序编程接口及丰富、优秀的第三方类库
java技术体系按照所服务的领域来划分,可以分为四大模块:java card
java se
java me
java ee
jdk发展史
java语言前身:oak
- 1995年,oak更名为java,同时sun正式提出”write once, run anywhere”的口号,标识着java正式诞生
- 1996年,jdk1.0发布,并提供了一个纯解释性的java虚拟机(Sun Classic VM)
- 1997年,jdk1.l发布,代表技术有:jdbc, rmi, java beans, .jar文件等
- 1998年,jdk1.2发布,正式把java技术体系划分为3个方向:java se, java me, java ee,代表技术较多,如ejb, java pluin-in, swing等。java虚拟机中第一次内置了jit编译器,且附带了HotSpot作为备选
- 2000年,jdk1.3发布,将HotSpot作为默认虚拟机,并提供jndi作为平台级服务,从此后Sun公司基本保持两年一个主版本的更新速度
- 2002年,jdk1.4发布,标志着java正式走向成熟,代表技术有:正则表达式、异常链、nio、日志类、xml解析器等等
- 2004年,jdk1.5(jdk5)发布,主要是对java语言的易用性方面做了改进
- 2006年,jdk1.6(jdk6)发布,除了改进之外,Sun正式将java开源(GPL协议),并建立了OpenJDK组织对其进行管理
jdk1.7(jdk7)开发,Sun公司由于各种原因,最终无法按计划完成。2009年Oracle公司将其收购后,对jdk1.7的内容进行大幅度裁剪,并把剩余内容延迟到jdk1.8中。jdk1.7于2011年正式发布 - 2013年,jdk1.8(jdk8)发布,加入了lambda表达式及函数式接口等支持
部分jvm介绍
Sun Classic VMr
- Classic VM是Sun公司发布的第一款商用java虚拟机,作为默认虚拟机与jdk1.0绑定发布,技术较为原始
- 在jdk1.2之前都是唯一存在的虚拟机
- 只能使用纯解释器方式来运行java程序
- 如果要使用JIT编译器,必须外挂
Exact VM
- 为了解决Classic VM存在的各种问题而开发,在jdk1.2期间发布
- 具备了现代高性能虚拟机的原型
- 在商用只存在了短暂的时间后,即被更为优秀的HotSpot取代
Sun HotSpot VM
- 是SunJDK及OpenJDK中所带的虚拟机,也是目前使用最广的虚拟机
- 最初是由一家名为”Longview Teconologies”的小公司设计,在1997年该公司被Sun收购
- 其即有Sun之前两款虚拟机的优点,也有许多自身的技术优势如热点代码探测能力
Sun Mobile-Embedded VM/Meta-Circular VM
- Sun公司针对移动和嵌入式市场的虚拟机
BEA JRockit
- 一款专门为服务端硬件和服务端应用场景而专门优化的虚拟机
- 不关注应用程序的启动速度,因而其内部不含解析器的实现,全部代码靠JIT编译运行
- 除此之外,其垃圾收集器和MissionControl等服务套件的实现也一直在众多虚拟机中保持领先的水平
IBM J9 VM
- Azul VM/BEA Liquid VM
- Apache Harmony/Google Android Dalvik VM
- Microsoft JVM