学习Java之前我们要重点学习一下这个三个重要的名词:JDK、JRE、JVM。了解了这三者的区别与联系后才能更深入的学习Java的结构及组成。
JDK:
学习JDK之前我们先了解一下"SDK"的概念。
SDK:Software Development Kit 的缩写,中文即“软件开发工具包”,广义上指辅助开发某一类软件的相关文档、范例和工具的集合。
我们最常用的SDK类似于Android SDK,PHP SDK,Flex SDK,iOS SDK等。SDK并不是一个具有固定结构、格式、统一规范的开发工具(包),不同厂商或组织都有自己推出的SDK产品。
SDK理解起来很简单,正如,我们未来一个项目而将一些以前用过的源码类库封装起来,形成一个统一的产品整体,在PMP中又称组织过程资产。这个源码产品包对于要用到它的项目而言就是一个SDK。又如,我们在开发Flex软件时,要用到Flex SDK,否则无法提供相应底层的支持和实现。简而言之SDK就是为程序开发人员在开发软件代码过程中提供统一支持的源码/非源码包。其实JDK就是一种SDK,我们可以称JDK为Java SDK,JDK 是整个Java的核心,包括了Java运行环境、Java工具和Java基础类库,但我们这里指的JDK一般指我们的开发环境所依赖的“Java SDK开发环境组件”,即Java工具和Java基础类库。
版本
|
名称
|
发行日期
|
JDK 1.1.4
|
Sparkler(宝石)
|
1997-09-12
|
JDK 1.1.5
|
Pumpkin(南瓜)
|
1997-12-13
|
JDK 1.1.6
|
Abigail(阿比盖尔–女子名)
|
1998-04-24
|
JDK 1.1.7
|
Brutus(布鲁图–古罗马政治家和将军)
|
1998-09-28
|
JDK 1.1.8
|
Chelsea(切尔西–城市名)
|
1999-04-08
|
J2SE 1.2
|
Playground(运动场)
|
1998-12-04
|
J2SE 1.2.1
|
none(无)
|
1999-03-30
|
J2SE 1.2.2
|
Cricket(蟋蟀)
|
1999-07-08
|
J2SE 1.3
|
Kestrel(美洲红隼)
|
2000-05-08
|
J2SE 1.3.1
|
Ladybird(瓢虫)
|
2001-05-17
|
J2SE 1.4.0
|
Merlin(灰背隼)
|
2002-02-13
|
J2SE 1.4.1
|
grasshopper(蚱蜢)
|
2002-09-16
|
J2SE 1.4.2
|
Mantis(螳螂)
|
2003-06-26
|
Java SE 5.0 (1.5.0)
|
Tiger(老虎)
|
2004-09-30
|
Java SE 6.0 (1.6.0)
|
Mustang(野马)
|
2006-04
|
Java SE 7.0 (1.7.0)
|
Dolphin(海豚)
|
2011-07-28
|
Java SE 8.0 (1.8.0)
|
lambda
|
2014-04-04
|
JRE:
JRE(Java Runtime Environment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。
JRE包括两部分:Java Runtime Environment和Java Plug-in。JavaRuntimeEnvironment(JRE)是可以在其上运行、测试和传输应用程序的Java平台。它包括Java虚拟机、Java核心类库和支持文件。它不包含开发工具--编译器、调试器和其它工具。JRE需要辅助软件--Java Plug-in--以便在浏览器中运行applet。
JRE理解起来就比较简单了,我们可以理解为JRE是Java程序的运行环境,它可以单独安装在系统或平台上,它的体积比较小,是JDK的“简化版”,JRE只提供运行环境没有开发环境,通过下图我们可以直观的了解到两者的区别:
其实我们通过上图很明显的发现,JDK与JRE结构上最大的区别就是JDK多了src,jre,include这三个文件夹,那么JDK与JRE又有什么本质的区别呢?
JDK多了src.zip包不难理解,JDK是面向程序员的,而且Java还是开源,提供源码是可以让程序员更好的理解Java基础类的结构及思想,以便广大程序员更好的学习Java,开源是一个非常明智的做法,这里不得不赞一下Sun公司这个伟大的壮举。
include文件夹,我们发现里面有很多“.h”结尾的文件,“.h“是用C++/C语言编写的头文件的扩展名。支持Java本地接口和Java虚拟机调试程序接口的本地代码编程,也就是可以调用C程序。这方面我接触的也不是很多,希望有经验丰富的朋友补充。
细心的你肯定还会发现,bin目录下两者的文件内容其实也是不同的。JDK下bin目录里全部都是exe文件(以windows安装为例),而JRE下bin目录里就不一样了,少了很多exe应用程序,多了很多应用程序扩展dll文件。JRE下少了例如javac,jar,javadoc等一些常用的编译程序。也就是说JRE不包含我们开发常用的一些编译器,调试器等。
JVM:
Java Virtual Mechinal(JAVA虚拟机)。JVM是JRE的一部分,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM 的主要工作是解释自己的指令集(即字节码)并映射到本地的 CPU 的指令集或 OS 的系统调用。Java语言是跨平台运行的,其实就是不同的操作系统,使用不同的JVM映射规则,让其与操作系统无关,完成了跨平台性。JVM 对上层的 Java 源文件是不关心的,它关注的只是由源文件生成的类文件( class file )。类文件的组成包括 JVM 指令集,符号表以及一些补助信息。
引用一张图我们就能很好的了解JDK,JRE,JVM三者间的关系:
我们通过图片就可以知道JDK>JRE>JVM。
JDK 包含了诸如javac、jar、javadoc等开发人员用到的工具。
相关推荐
### Java零基础-JDK JRE JVM三者关系详解 #### 一、引言 在Java编程的世界里,JDK(Java Development Kit)、JRE(Java Runtime Environment)和JVM(Java Virtual Machine)这三个核心概念是不可或缺的基础知识。...
### JDK、JRE与JVM的区别详解 #### 一、引言 在深入探讨JDK、JRE与JVM之间的区别之前,我们首先需要明确这三个概念的基本定义及其各自的作用。对于初学者而言,理解这些核心组件是学习Java编程的基础。 #### 二、...
一张图看懂JVM、JRE、JDK
Java开发中的JDK、JRE和JVM是三个至关重要的概念,它们构成了Java应用程序的运行基础。理解这三个术语以及它们之间的关系是每个Java开发者必备的知识。 JDK(Java Development Kit)是Java开发工具包,它是Java开发...
### Java中的JDK、JRE与JVM解析 #### 一、引言 在Java编程领域,JDK、JRE和JVM这三个概念是至关重要的基础知识点。虽然它们经常被提及,但很多人仍然对它们之间的关系和各自的功能感到困惑。这篇文章将深入探讨这...
Java 技术体系的核心组成部分包括 JDK (Java Development Kit),JRE (Java Runtime Environment) 和 JVM (Java Virtual Machine)。理解这三个概念对于Java开发者至关重要。 首先,JDK是Java开发工具包,它是Java...
JDK(java Development Kit):java 的开发和运行环境,包括java 的开发工具和 jre,在程序员的电脑上当然要安装JDK; JRE(Java Runtime Environment):它是Java运行环境,包括,java 运行的所需的类库+JVM(java ...
详解JDK,JRE,JVM.md
我们必须明白JDK,JRE和JVM之间的差异.mp4
JDK 与 JRE 的区别 JDK(Java Development Kit)和 JRE(Java Runtime Environment)是 Java 语言的两个核心组件,它们之间存在着一定的关系和区别。下面我们将详细介绍 JDK 和 JRE 的概念、区别和关系。 JDK JDK...
标题中的"AIX JDK1.8 JRE1.8 32位"指的是IBM的Java开发工具包(JDK)和Java运行环境(JRE)的32位版本,这两个组件都是针对AIX操作系统设计的。AIX,全称Advanced Interactive eXecutive,是IBM推出的一种基于UNIX的...
本文主要讲解JDK、JRE和JVM之间的区别。 一、JDK、JRE、JVM的关系 1. JDK(Java Development Kit):Java开发工具包,是Java开发人员必备的软件,包含了编译器(javac)、JRE、调试器、文档生成工具、打包工具等。...
Java开发工具包(JDK)是Java编程的核心组件,提供了编写、编译和运行Java程序所需的一切工具。...理解JDK、JVM和JRE之间的关系对于Java开发者来说至关重要,因为它们构成了Java开发和运行的基础框架。
Java开发中的JDK、JRE和JVM是三个至关重要的概念,它们构成了Java技术的基础框架。下面将详细阐述这三个术语的区别与联系。 首先,JDK(Java Development Kit)是Java开发工具包,它是整个Java开发的核心。JDK包含...
【Java面试题】JDK、JRE与JVM的区别
Java JDK与JRE是Java开发和运行环境中的两个核心组件,它们在软件开发和应用程序执行中扮演着至关重要的角色。本文将深入探讨这两个组件的概念、功能以及它们之间的关系。 Java Development Kit (JDK) 是Oracle公司...