深入理解java虚拟机-01 走进java
第一章是对java的产生,历史的整体介绍
java的使用很广泛,安装jdk的时候会看到一句广告语runs in 10 billions machines
。使用java的设备多达几十亿台
1.概述
- 优点:
- 摆脱了平台的限制,一次编写,到处运行
- 相对安全的内存管理和访问机制,避免了绝大部分的内存泄漏和指针越界问题
- 热点代码检测和运行是编译及优化
- 完善的应用接口,还有无数来自商业机构和开源社区的第三方类库来帮助他实现各种功能
。。。
尽管java有这么多优点,相对于其他语言,使用上简单了很多。但是作为一名java程序员,想到在此方面有更高的造诣,还是要思考“程序这样写好不好”,因此就需要多java的运行环境--java虚拟机有一定的了解,这样才能上升到
不惑
的境界、
2.java技术体系
sun官方定义的java技术体系包括以下几个组成部分
1. java程序设计语言
2. 各种硬件平台上的java虚拟机
3. class文件格式
4. java api类库
5. 来自商业机构和开源社区的第三方java类库
我们可以把1
,2
,4
这三部分统称为jdk(java development kit),jdk是用于支持java程序开发的最小环境
另外,可以把java api类库中的java SE API子集和java虚拟机加这两部分同城为jre(java runtime environment),jre是支持java程序运行的标准环境
java技术体系可以分为4个平台
- java card:java小程序(Applets)运行在小内存设备上的平台
- java me:支持移动终端,J2ME
- java se(Standard Edition):支持面向桌面级应用,,J2SE
- java ee(Enterprise Edition): 多层架构的企业应用, J2SE
3. java发展史
java诞生在1996
年,1月23日,jdk1.0发布。jdk1.0提供了一个纯解释执行的java虚拟机实现Sun Classic VM
。jdk1.0版本的代表技术包括java虚拟机,applet,awt等
1996年底,sun公司在美国旧金山举行了首届javaOne大会,从此JavaOne成为全世界数百万java开发者每年一度的技术盛会(我咋不知道呢)
1997年,sun公司发布了jdk1.1,技术代表有jar文件格式、jdbc、javabeans、RMI(啥?),支持内部类(Inner Class)和反射(Reflection)
1998年,sun公司发布了里程碑版本1.2,工程代号playground(竞技场),java技术体系分为三个部分:j2se,j2me,j2ee。出现了EJB,java plug-in,Java IDL、Swing等。这个版本第一次内置了JIT(just in time)编译器。在语言和API级别上,java添加了strictfp
关键字(不知道是啥)和现在java编码中常用的一些类Collections集合类。
1999年4月27日,HotSpot虚拟机(熟悉的名字)发布,它最初是由一家名为Longview Technologies
的小公司开发,因为表现优异,在97年被sun收购。后来它成为了jdk1.3之后所有版本的sun jdk的默认虚拟机
中间连续发布了一些版本,但都没什么大的特性
2004年9月30日,1.5发布。改进非常大:自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环等语法特性,提供了concurrent并发包
2006年12月11日,1.6对虚拟机内部做了大量改进,包括锁与同步、垃圾收集、类加载方面的算法
2006年11月13日的javaone大会上,sun公司宣布最终会将java开源,建立了OpenJDK
组织对这些源码进行独立管理。除了少量的产权代码外,OpenJDK几乎包括了SunJDK的全部代码。
2011年7月28日,1.7发布提供了G1收集器,加强对非java语言的调用
2009年4月20日。oracle公司74亿美元收购了sun公司,此前oracl'e公司已经收购了另外一家大型中间件企业BEA公司,自此,oracle公司拥有了三大商业虚拟机中的其中两个jRockit
和HotSpot
(另外一个时IBM的J9 VM
)
4 java虚拟机的发展史
5 展望java技术的未来
6实战: 自己编译jdk
书中提供了怎样自己编译OpenJDK的样例,放着,先看后面的内容
吐槽一下,博客园的markdown编辑器不友好啊,都没有
edit and view
视图