今天对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. 两种方法 更改 EBS R12界面LOGO以及内容

    from:metalink more: Note 174219.1 - How To Change The Logo In The Oracle Application Menu Note 84975 ...

  2. linux文件查找及操作

    在linux下查找文件的办法最常用的就是find指令,让我们来看一下find指令如何来使用吧: find find . -name  txt             //在当前目录查找名字为txt的文 ...

  3. ZooKeeper 权限管理

    这其中一个显而易见的问题就是权限:如果我的数据被别人动了怎么办? 方案一:采用ZooKeeper支持的ACL digest方式,用户自己定义节点的权限 这种方案将zookeeper的acl和diges ...

  4. 初识MySQL数据库的各种CMD命令窗口下的指令

    今天我们就来看一下数据库的各种命令,以下命令全部是从CMD命令窗口下的命令行输入指令,首先如果如果输入mysql,系统提示"mysql不是内部命令或外部命令.那么这其实是环境变量没有设置好的 ...

  5. C# 设置Word文档背景(纯色/渐变/图片背景)

    Word是我们日常生活.学习和工作中必不可少的文档处理工具.精致美观的文档能给人带来阅读时视觉上的美感.在本篇文章中,将介绍如何使用组件Free Spire.Doc for .NET(社区版)给Wor ...

  6. SpringBoot yml 配置

    1. 在 spring boot 中,有两种配置文件,一种是application.properties,另一种是application.yml,两种都可以配置spring boot 项目中的一些变量 ...

  7. css3属性(1)

    text-transform语法: text-transform : none | capitalize| uppercase| lowercase 参数: none : 无转换发生 capitali ...

  8. SpringBoot整合ElasticSearch实现多版本的兼容

    前言 在上一篇学习SpringBoot中,整合了Mybatis.Druid和PageHelper并实现了多数据源的操作.本篇主要是介绍和使用目前最火的搜索引擎ElastiSearch,并和Spring ...

  9. Msys+MinGW编译VLC

      说明:本文只是对官方文档进行简单的翻译总结,旨在帮助一些英文不太好的朋友.官方文档请见wiki.videolan.org/Win32CompileMSYSNew. Msys是MinGW的一个辅助工 ...

  10. Java 故障安全异常处理

    异常处理代码必须保证其故障安全机制,其中一条重要的规则如下: 在try-catch-finally块抛出的最后一个异常将会在调用堆栈中传递. 所有早期异常将会消失. 如果从一个catch或finall ...