今天对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. Leetcode_237_Delete Node in a Linked List

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/47334649 Write a function to de ...

  2. Linux文件系统的简单操作 - df, du, ln

    现在我们知道磁盘的整体数据是在 superblock 区块中,但是每个各别文件的容量则在 inode 当中记载的. 那在文字接口底下该如何叫出这几个数据呢?底下就让我们来谈一谈这两个命令: df:列出 ...

  3. iOS下FMDB的多线程操作(二)

    上一篇记录不使用FMDatabaseQueue来使用多线程,这一篇记录一下使用FMDatabaseQueue的方式. 需要注意的时queue操作中不能嵌套queue操作,否则会各种错误. 当使用FMD ...

  4. redis持久化AOF与RDB

    RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原 ...

  5. 开源项目AndroidReview学习小结(1)

    多看多学涨姿势 最近学习了一个开源项目,感觉收获颇多,这里做下简要的记录,首先感谢作者的开源.先看个大概图 感觉框架非常简单,界面也很一般,不过底层的处理的一些处理还是有很多可圈可点之处,代码的处理一 ...

  6. Linux内核中断和异常分析(下)

    这节,我们继续上,中(以前的日志有)篇目进行分析,结合一个真实的驱动案例来描述linux内核中驱动的中断机制,首先我们先了解一下linux内核中提供的中断接口. 这个接口我们需要包含一个头文件:#in ...

  7. ruby正则表带式对象使用备忘

    ruby对于正则表达式的使用是非常灵活的,提供了专门的正则表达式对象Regexp.其包括match实例方法,字符串也含有该方法.so可以这么做: /a/ =~ "a" " ...

  8. Jquery Easing函数库

    从jQuery API 文档中可以知道,jQuery自定义动画的函数.animate( properties [, duration] [, easing] [, complete] )有四个参数: ...

  9. webpack安装使用

    一.安装 1.安装node.js,Webpack 需要 Node.js v0.6 以上支持 2.使用npm(软件包管理 )安装webpack (1)全局安装    npm install webpac ...

  10. 关于如何通过kali linux 攻击以及破解WPA/WPA2无线加密

    http://blog.csdn.net/wingstudio_zongheng/article/details/51435212 1.前期准备 1)打开一个终端  执行命令: ifconfig   ...