Java是SunMicrosystems公司推出的能够跨越多平台的,可移植性最高的一种面向对象的编辑语言,其特点是:安全、可移植性、跨平台。
如果按照技术所服务的领域来划分,可以分为以下几个主要的产品线:
- Java Card:支持小程序运行在小内存设备上的平台。
- JavaME(Micro Edition):嵌入式系开发,掌上电脑,手机;对Java API有所精简,并添加了移动终端的针对性支持。
- JavaSE(Standard Edition):标准版,用于桌面程序的开发;提供了完整的Java核心API。
- JavaEE(Enterprise Edition):平台企业版,网络程序和企业级应用开发;除了提供 Java SE API外,还对其做了大量有针对性的扩充,在JDK10之后被称为Jakarta EE。
1、从组成内容角度了解JDK、JRE、JVM:
在官方JavaSE文档中,一开头就介绍了JVM、JRE、JDK之间的关系及内容:
- JDK(Java development Kit):开发工具包,是JRE的超集,包含了JRE所有内容,开发applet和应用程序所需的编译器和调试器等工具和工具API、以及Java程序语言;
- JRE(Java Runtime Environment):运行时环境,提供了库、Java虚拟机(JVM)和其他组件来运行用Java编程语言编写的applet和应用程序;
- JVM(Java Virtual Machine):Java虚拟机,HostSpot Client和Server VM。
如下图:
2、从Java应用程序的运行机制角度了解JDK、JRE、JVM
计算机高级语言的类型主要有编译型和解释型两种,而Java语言两种类型的结合。
过程为:编写源程序(.java) →编译器(javac)将源文件编译成字节码文件(.class)→虚拟机(JVM)解释执行为机器码。
可以这样理解:
编译阶段:使用Javac编译器先将.java源文件编译为.class字节码文件;
运行阶段:JVM找到.class文件加载类、找到main方法、开始执行、管理并分配内存,最后再执行垃圾收集。
在这个过程中JVM、JRE、JDK的任务为:
JVM:
- 用于执行字节码的“虚拟计算机”。定义了指令集,寄存器集,结构栈,垃圾收集堆,内存区域。
- 负责将Java字节码解释运行,边解释边运行。
- Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”。Java虚拟机是实现跨平台的核心机制。
JRE:
- 包含虚拟机(JVM),库函数,运行Java应用程序所必须的文件。
- 主要任务:1. 加载代码----由类加载器执行; 2. 检验代码----由字节码检验器执行; 3. 执行代码----由运行时解释执行 。
JDK:
- 包含JRE,以及增加编译器和调试器等用于程序开发的文件。
- 建议: - 如果只是运行Java程序只需要JRE,如果要开发Java程序,就需要安装JDK。
注意:
- 同一Java源文件中最多只能定义一个带public修饰的类,且要与源程序文件名一致