今天对Java的jdk有了更加深入的理解:

  Java的jdk其实一共包含三部分内容:

    1、工具包

    2、类库

    3、JRE

jdk的全名:Java develop kit (java开发工具)

  jdk包含了对Java的编译以及运行的处理,他能对编写的Java代码进行编译,编译之后的字节码文件,在jdk内部的虚拟机上运行,可以说它提供了全套的Java服务,首先,我们先来说说编译,一般的代码都是通过编译之后才能产生字节码文件,以前一些低级语言,他们是直接生成机器码,也就是我们经常说到的0,1码来直接运行在机器上的,这个0,1,就是过去的人用纸带进行编写代码的另一种表现形式,但是这种方法有个弊端,就是不能跨平台,高级语言Java就解决了这个问题,他在jdk中嵌入了一个虚拟机,生成的也不再是之前的机器码了,而是另一种叫做字节码的东西,jdk通过在虚拟机上运行字节码来实现和机器码一样的效果,这样就就提高了跨平台的性质,平台换了,只要虚拟机能识别出来就可以将代码进行处理,使其产生相同的结果,在整个体系结构上来说在机器上最底层的是硬件资源,再上一层就是操作系统,程序都是在操作系统上进行执行的,我们的字节码文件可不是直接运行在操作系统上,他和操作系统之间隔了一层虚拟机:

  接下来,该说说这个运行的了,运行方面jdk提供了一个jre,在下载的时候可以单独下载这个jre,然而,我们应该知道的是,jre其实是jdk的一部分,他是jdk的子集。

jre全称:Java runtime environment (Java运行环境),这个提供了Java运行所需要的所有的东西,同时,jre对于将来工程的部署也起到一定的作用。  

  下面,我具体说一下jdk里边三个元素分别对应安装之后生成文件的内容:

    1、对于工具包来说他有一个bin目录,它是用来放一些工具的,比如说Java.exe,这个是用来运行Java字节码的指令,javac.exe,这个使用来编译Java文件的,还有一个是jar.exe,这个用来打包文件用的。

    2、对于类库来说,有一个目录叫lib,里边存了一些工具类的类库,通过这些类提供的方法方便对硬件进行管理,包括文件的存取,进程之间的通信

    3、对于jre来说,他提供了程序运行的环境,前文已经提到过了,这里不再赘述。

对JDK的深入理解的更多相关文章

  1. JDK学习---深入理解java中的HashMap、HashSet底层实现

    本文参考资料: 1.<大话数据结构> 2.http://www.cnblogs.com/dassmeta/p/5338955.html 3.http://www.cnblogs.com/d ...

  2. JDK学习---深入理解java中的LinkedList

    本文参考资料: 1.<大话数据结构> 2.http://blog.csdn.net/jzhf2012/article/details/8540543 3.http://blog.csdn. ...

  3. JDK学习---深入理解java中的String

    本文参考资料: 1.<深入理解jvm虚拟机> 2.<大话数据结构>.<大话设计模式> 3.http://www.cnblogs.com/ITtangtang/p/3 ...

  4. 1、Java语言概述与开发环境——JDK JRE JVM理解

    一.理解概念: 1.JDK(Java Development Kit Java开发工具包) JDK是提供给Java开发人员使用的,其中包含Java的开发工具,也包括JRE,所以安装了JDK,就不用单独 ...

  5. jdk源码理解-String类

    String类的理解 简记录一下对于jdk的学习,做一下记录,会持续补充,不断学习,加油 1.String的hash值的计算方法. hash值的计算方法多种多样,jdk中String的计算方法如下,比 ...

  6. 从JDK源码理解java引用

    目录 java中的引用 引用队列 虚引用.弱引用.软引用的实现 ReferenceHandler线程 引用队列的实现 总结 参考资料 java中的引用 JDK 1.2之后,把对象的引用分为了四种类型, ...

  7. JDK学习---深入理解Comparator、TreeSet、TreeMap为什么可以排序

    我本来打算仔细的去分析分析TreeSet和TreeMap排序规则,并且从底层实现和数据结构入手.当我去读完底层源码以后,我感觉我就的目标定的太大了,单单就是数据结构就够我自己写很久了,因此我决定先易后 ...

  8. JDK动态代理理解精髓

      1.Java动态代理的关键是:Proxy类要和InvocationHandler的接口实现类,要用同一个目标target对象class,所以精髓是InvocationHandler和Proxy是一 ...

  9. 07深入理解Java线程池

    之前面试baba系时遇到一个相对简单的多线程编程题,即"3个线程循环输出ADC",自己答的并不是很好,深感内疚,决定更加仔细的学习<并发编程的艺术>一书,到达掌握的强度 ...

随机推荐

  1. linux下播放组播流出现setsockopt:No such device错误

    在linux下播放组播流出现setsockopt:No such device错误是因为多播IP没有add路由表里面 可以采用如下命令完成: root@android:/ # busybox rout ...

  2. 关于精灵帧(Sprite Frame)的尺寸大小

    一个对象的精灵帧(Sprite Frame)有若干关于大小的尺寸. 比较容易混淆,这里记录下来区别: CCSpriteFrame *spriteFrame = self.spriteFrame; CG ...

  3. 【65】Mybatis详解

    Mybatis介绍 MyBatis是一款一流的支持自定义SQL.存储过程和高级映射的持久化框架.MyBatis几乎消除了所有的JDBC代码,也基本不需要手工去设置参数和获取检索结果.MyBatis能够 ...

  4. Java进阶(十八)Java实现定时器(Timer)

    Java实现定时器(Timer) 绪 在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等.对于这样的操作最方便.高效的实现方式就是使用java.util.Timer工具类.java.u ...

  5. mysql进阶(十六)常见问题汇总

    mysql进阶(十六)常见问题汇总 MySQL视图学习: http://www.itokit.com/2011/0908/67848.html 执行删除操作时,出现如下错误提示: 出现以上问题的原因是 ...

  6. navicat为mysql建立索引

    索引的目的是大大提高查询效率,还有读写效率. kettle向sql里面插入,更新时,也要建立索引,可以大大提升处理时间. 但是建立索引报错:Specified key was too long; ma ...

  7. Android高效率编码-第三方SDK详解系列(一)——百度地图,绘制,覆盖物,导航,定位,细腻分解!

    Android高效率编码-第三方SDK详解系列(一)--百度地图,绘制,覆盖物,导航,定位,细腻分解! 这是一个系列,但是我也不确定具体会更新多少期,最近很忙,主要还是效率的问题,所以一些有效的东西还 ...

  8. leetcode之旅(9)-Reverse Linked List

    题目描述: Reverse a singly linked list. click to show more hints. Hint: A linked list can be reversed ei ...

  9. 如何oracle调试存储过程

    1.打开PL/SQL Developer 如果在机器上安装了PL/SQL Developer的话,打开PL/SQL Developer界面 输入用户名,密码和host名字,这个跟在程序中web.con ...

  10. navicat for mysql远程连接ubuntu服务器的mysql数据库

    经常玩服务器上的mysql数据库,但是基于linux操作Mysql多有不便,于是就想着使用GUI工具来远程操作mysql数据库.已经不是三次使用navicat-for-mysql了,但是每次连接远程服 ...