JVM

JVM高级特性-关于JAVA

Posted by YaPi on April 15, 2017

技术体系

  • 1991.4 -> James Gosling -> Oak
  • 1995.5.23 -> 更名为Java
  • 1996.1.23 -> java 1.0 -> 第一个虚拟机(Sun Class VM)

并不是只有java运行在java虚拟机上,广义上来讲,Clojure,JRuby,Groovy等运行于java虚拟机上的语言及其他相关程序都属于java技术体系的一部分。

Sun官方定义的java技术体系包括:

  1. Java程序设计语言
  2. 各种硬件平台上的虚拟机
  3. Class文件格式
  4. Java API 类库
  5. 来自商业机构和开源社区的第三方JAVA类库

可以将 java程序涉及语言,java虚拟机,java API类库这三部分统称为JDK。

另外,可以将Java API类库中的Java SE API子集和Java虚拟机这两部分统称为JRE

java的每个版本升级,都有其特有的更新:

  1. 1.1的JAR文件格式、JDBC、JavaBeans,内部类,反射
  2. 1.2的Collections集合类
  3. 1.3(代号美洲红隼)提供了大量新的Java2D API
  4. 1.4(代号灰背隼)是java真正走向成熟的版本,提供了正则、异常链、NIO、日志类、XML解析器
  5. 1.5(代号老虎)是语法易用性上的提升,自动装箱、泛型、动态注解、枚举、可变长参数、foreach、提供java.util.concurrent并发包
  6. 1.6(代号野马)对java虚拟机内部做了大量改进,包括锁与同步、垃圾收集、类加载等
  7. 1.7(代号海豚) 提供G1收集器

虚拟机发展历程

  1. Classic VM
  2. Exact VM –> 采用准确式内存管理(能够确认内存位置上存储的是什么类型的值)
  3. Sun HotSpot VM

HostSpot VM的热点代码探测能力可以通过执行计数器找出最具有编译价值的代码,然后通知JIT编译器以方法为单位进行编译。如果一个方法被频繁调用,或方法有效循环次数很多,将会分别触发标准表意和OSR(栈上替换)变异动作。通过编译器与解释器恰当的协同工作,可以在最优化的程序响应时间与最佳执行性能中取得平衡。

2016 年的JavaOne大会上,sun公司宣布将Java开源。

2008年和2009年Oracle收购BEA和Sun公司,同时拥有啦两款优秀的Java虚拟机。JRockit VM 和 HotSpot VM