对JDK的深入理解
今天对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的深入理解的更多相关文章
- JDK学习---深入理解java中的HashMap、HashSet底层实现
本文参考资料: 1.<大话数据结构> 2.http://www.cnblogs.com/dassmeta/p/5338955.html 3.http://www.cnblogs.com/d ...
- JDK学习---深入理解java中的LinkedList
本文参考资料: 1.<大话数据结构> 2.http://blog.csdn.net/jzhf2012/article/details/8540543 3.http://blog.csdn. ...
- JDK学习---深入理解java中的String
本文参考资料: 1.<深入理解jvm虚拟机> 2.<大话数据结构>.<大话设计模式> 3.http://www.cnblogs.com/ITtangtang/p/3 ...
- 1、Java语言概述与开发环境——JDK JRE JVM理解
一.理解概念: 1.JDK(Java Development Kit Java开发工具包) JDK是提供给Java开发人员使用的,其中包含Java的开发工具,也包括JRE,所以安装了JDK,就不用单独 ...
- jdk源码理解-String类
String类的理解 简记录一下对于jdk的学习,做一下记录,会持续补充,不断学习,加油 1.String的hash值的计算方法. hash值的计算方法多种多样,jdk中String的计算方法如下,比 ...
- 从JDK源码理解java引用
目录 java中的引用 引用队列 虚引用.弱引用.软引用的实现 ReferenceHandler线程 引用队列的实现 总结 参考资料 java中的引用 JDK 1.2之后,把对象的引用分为了四种类型, ...
- JDK学习---深入理解Comparator、TreeSet、TreeMap为什么可以排序
我本来打算仔细的去分析分析TreeSet和TreeMap排序规则,并且从底层实现和数据结构入手.当我去读完底层源码以后,我感觉我就的目标定的太大了,单单就是数据结构就够我自己写很久了,因此我决定先易后 ...
- JDK动态代理理解精髓
1.Java动态代理的关键是:Proxy类要和InvocationHandler的接口实现类,要用同一个目标target对象class,所以精髓是InvocationHandler和Proxy是一 ...
- 07深入理解Java线程池
之前面试baba系时遇到一个相对简单的多线程编程题,即"3个线程循环输出ADC",自己答的并不是很好,深感内疚,决定更加仔细的学习<并发编程的艺术>一书,到达掌握的强度 ...
随机推荐
- 说说struts2中拦截器的请求流程一(模拟大致流程)
本文可作为北京尚学堂struts2课程的学习笔记. 首先 什么是拦截器?拦截器能干什么? 拦截器,顾名思义就是拦截对象然后做操作的东西,至于是拦截谁?那自然是拦截action了.能做什么操作呢?你想让 ...
- 【Visual C++】游戏编程学习笔记之五:单一背景滚动
本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44224963 作者:ZeeCod ...
- FFMPEG结构体分析:AVFrame
注:写了一系列的结构体的分析的文章,在这里列一个列表: FFMPEG结构体分析:AVFrameFFMPEG结构体分析:AVFormatContextFFMPEG结构体分析:AVCodecContext ...
- 介绍一种很棒的wince 如何替换系统声音的方法
Topic:介绍一种很棒的wince 如何替换系统声音的方法(作者:Baiduluckyboy) //------------------------------------------------- ...
- Android BLE与终端通信(三)——客户端与服务端通信过程以及实现数据通信
Android BLE与终端通信(三)--客户端与服务端通信过程以及实现数据通信 前面的终究只是小知识点,上不了台面,也只能算是起到一个科普的作用,而同步到实际的开发上去,今天就来延续前两篇实现蓝牙主 ...
- BASE64 的加密与解密
package com.suning.security; import java.io.IOException; import sun.misc.BASE64Decoder; import sun.m ...
- rails将类常量重构到数据库对应的表中之三
经过博文之一和之二的重构,貌似代码表现的还不错,正常运行和test都通过鸟,但是,感觉告诉我们还是有什么地方不对劲啊!究竟是哪里不对劲呢?我们再来好好看一下. 我们把数据库表中的支付方式集合直接放在实 ...
- 深入了解Collections
在 Java集合类框架里有两个类叫做Collections(注意,不是Collection!)和Arrays,这是JCF里面功能强大的工具,但初学者往往会忽视.按JCF文档的说法,这两个类提供了封装器 ...
- Python--简单接口测试实例(一)
适用人员:初学python的测试人员,若对抓包不太清楚的可先学习抓包的知识 接口测试流程:发送请求-->返回响应-->结果判定-->生成报告 案例:下面以[今目标]新建客户为例来进行 ...
- mac port 清理
http://popozhu.github.io/2014/10/27/mac-port-%E6%B8%85%E7%90%86/ 使用 mac port 来安装一些软件,时间久了后(也有两年多),更新 ...