JDK、JRE和JVM小议

虽然学习Java蛮长的时间了,对一些概念还是模模糊糊,每每谈起一知半解很是惭愧,所以抽个时间将这方面一些信息收集、整理,有误之处还请指正。

这里先说一下我平时比较关心的JDK,JRE,和JVM的概念,

JDK(Java Development Kit)是使用最广泛的java SDK(Software Development Kit),包含了JRE(Java Runtime Environment)、java工具和java基础类库等。除了Sun公司外,许多公司和组织也开发了自己的JDK,如IBM、淘宝等。JDK是提供给程序员的工具包,以此来开发java程序。

下面介绍JDK的重要部分JRE,java工具和java基础类库(这并不是相互独立的几部分,他们之间有相互的部分包含):

  • JRE是运行java程序所必须的环境的集合,也可以说是运行java程序的用户所必须具备的软件(环境),包含JVM标准实现和Java核心类库及一些支持文件,与JDK相比缺少一些开发工具如编译器,调试器等;
  • java工具,如:
    • javac – 编译器,将源程序转成字节码
    • jar – 打包工具,将相关的类文件打包成一个文件
    • javadoc – 文档生成器,从源码注释中提取文档
    • jdb – debugger(调试器),查错工具
    • java – 运行编译后的java程序(.class后缀的)
    • appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器
    • javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件
    • javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义
    • jconsole: Java进行系统调试和监控的工具;
  • java基础类库,常用的一些包如:  
    • java.lang: 这个是系统的基础类,比如String等都是这里面的,这个package是唯一一个可以不用import就可以使用的Package
    • java.io: 这里面是所有输入输出有关的类,比如文件操作等
    • java.net: 这里面是与网络有关的类,比如URL,URLConnection等。
    • java.util : 这个是系统辅助类,特别是集合类Collection,List,Map等。
    • java.sql: 这个是数据库操作的类,Connection, Statememt,ResultSet等
    • javax.servlet: 这个是JSP,Servlet等使用到的类

JRE包含了JVM的标准实现,先说下JVM的概念:

     JVM就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。
     Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。JVM 通过抽象操作系统和CPU结构,提供了一种与平台无关的代码执行方法,即与特殊的实现方法、主机硬件、主机操作系统无关。但是在一些小的方面,JVM的实现也是互不相同的,比如垃圾回收算法,线程调度算法(可能不同OS有不同的实现)。 
     JVM 的主要工作是解释自己的指令集(即字节码)到CPU的指令集或OS的系统调用,保护用户免被恶意程序骚扰。JVM 对上层的Java源文件是不关心的,它关注的只是由源文件生成的类文件(class file )。类文件的组成包括JVM指令集,符号表以及一些辅助信息。

下图清晰的展示出JDK,JRE和JVM的联系及区别(图转自http://java-mzd.iteye.com/blog/838514

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值