Java虚拟机(1):认识Java技术体系及虚拟机

Java技术体系

按功能划分

  • Java程序设计语言

  • 各种硬件平台上的Java虚拟机实现

  • Class文件格式

  • Java类库API

  • 来自商业机构和开源社区的第三方Java类库

  • JDK java Development Kit (Java开发最小运行单位Java程序设计语言、Java虚拟机、Java类库)

  • JRE Java runtime environment (Java运行环境Java类库API中的Java SE API子集和Java虚拟机)

按服务对象划分

  • Java Card:支持Java小程序(Applets)运行在小内存设备(如智能卡)上的平台。

  • Java ME(Micro Edition):支持Java程序运行在移动终端(手机、PDA)上的平台,对Java API有所精简,并加入了移动终端的针对性支持。

  • Java SE(Standard Edition):支持面向桌面级应用(如Windows下的应用程序)的Java平台,提供了完整的Java核心API。

  • Java EE(Enterprise Edition):支持使用多层架构的企业应用(如ERP、MIS、CRM应用)的Java平台,除了提供Java SE API外,还对其做了大量有针对性的扩充,并提供了相关的部署支持。

Java虚拟机

HotSpot虚拟机(官方JDK均采用HotSpot VM),BEA JRockit(被Oracle 收购后不再开发)和IBM J9虚拟机;

Zing虚拟机,特定设备,是一个从HotSpot某旧版代码分支基础上独立出来重新开发的高性能Java虚拟机;

Apache Harmony ,没有真正地被大规模商业运用过,但是它的许多代码(主要是Java类库部分的代码)被吸纳进IBM的JDK 7实现以及Google Android SDK之中,尤其是对Android的发展起了很大推动作用;

Google AndroidDalvik VM,Android 4.4时代,支持提前编译(Ahead Of Time,AOT)的ART虚拟机迅速崛起,Android 5.0里ART就全面代替了Dalvik虚拟机;

Graal VM被官方称为“Universal VM”和“Polyglot VM”,这是一个在HotSpot虚拟机基础上增强而成的跨语言全栈虚拟机,可以作为“任何语言”的运行平台使用,这里“任何语言”包括了Java、Scala、Groovy、Kotlin等基于Java虚拟机之上的语言,还包括了C、C++、Rust等基于LLVM的语言,同时支持其他像JavaScript、Ruby、Python和R语言等。Graal VM可以无额外开销地混合使用这些编程语言,支持不同语言中混用对方的接口和对象,也能够支持这些语言使用已经编写好的本地库文件;

Substrate VM,是一个构建在Graal Compiler上的,支持ahead-of-time (AOT) compilation的编译及运行框架。

接下来会进一步阅读《深入理解Java虚拟机》,并进行更多内容的记录、讲解。

欢迎点赞/评论,你们的赞同和鼓励是我写作的最大动力!

posted @ 2020-09-10 14:20  几圈年轮  阅读(99)  评论(0编辑  收藏  举报