JVM学习(一)——JAVA与JVM
关于JVM的学习,一直拖拖拉拉,拖了好久,连一些基本的理念都不清楚,身为一个JAVA开发这真的很不应该。从今天开始起,会坚持更新JVM相关的笔记、博客,以《深入理解Java虚拟机》学习,向作者致敬。
JAVA
总所周知,Java是当下非常火爆的一门语言,JAVA开发的程序员在我国可谓是一抓一大片,诚然门槛儿比较低,但是java能够获得如此广泛的认可,它有着许多不可忽视的优点。
- 它摆脱了硬件平台的束缚,实现了“一次编写,到处运行”的理想
- 它提供了一个相对安全的内存管理和访问机制,避免了绝大部分的内存泄露和指针越界问题
- 它实现了热点代码检测和运行时编译优化,这使得java应用能随着运行时间的增加而获得更高的性能
- 它,拥有无数优秀的开源项目,大名鼎鼎的spring
java在今天之所以会被如此广泛的应用,个人认为有以下几个主要原因
- 门槛低,算是面向对象编程语言中较为简单的
- 稳固的生态体系,优秀的框架,出色的设计,spring为代表等节约了企业大量的开发成本
- 得益于JVM的默默付出
于是今天,我们就来谈谈JVM,java的核心,java的生命。
走进JVM
从广义上来看,clojure、jruby、groovy、Scala都属于JVM上的语言,可以说是java技术体系中的一员。我们可以把java程序设计语言、jvm、java api类库这三部分统称为JDK(Java Development Kit)。另外,也可以把Java API类库中的Java SE API 子集和jvm这两部分统称为JRE (Java Runtime Environment)
JVM的发展
1.Sun Classic/Exact VM
Sun Classic:世界第一款商用Java虚拟机
Exact VM:准确式GC:虚拟机可以知道内存中的某个位置的数据具体是什么类型。
2.Sun Hotspot VM
1. 目前使用最广泛的JVM
2.热点代码探测技术:通过执行计数器找出最具编译价值的代码。
也是OpenJDK 和SunJDK 所带的虚拟机
3.移动端虚拟机
KVM,CDC/CLDC Hotspot Implenmentation,Squawk VM,JavaInJava,Maxine VM
4.BEA JRockit/IBM J9VM
JRockit:号称世界上最快的Java 虚拟机。它不太关注程序启动速度,内部不包含解析器的实现。其垃圾收集器和missionControl服务套件等部分,在jvm之中处于领先的水准
5.Azul VM/BEA LiquidVM
6.Apache Harmony/Google Android Dalvik VM
dvm是Android中的虚拟机,我也曾写博客做对比过,但是貌似最近随着谷歌换了官方支持语言,一切会有些许改变
目前最流行的Java 虚拟机:
1.HotSpot VM (融合了Jrockit)
2.J9 VM
3.Zing VM
有兴趣的朋友可以去每个了解一下,篇幅太多,这里也不再赘述