【转】SDK、JDK、JRE、JVM、JDT、CDT等之间的区别与联系 .
相信大多数java初学者被这些概念搞蒙过,它们之间到底有什么区别,又有什么联系呢?下面我将一一解开大家心中的谜团。
首先,给大家解释一下这些概念:
1、SDK(Software DevelopKit,软件开发工具包)
用于帮助开发人员的提高工作效率。各种不同类型的软件开发,都可以有自己的SDK。Windows有WindowsSDK,DirectX 有 DirectX 9SDK,.NET开发也有Microsoft.NET FrameworkSDK。JAVA开发也不含糊,也有自己的Java SDK。
2、JDK
Java SDK最早叫JavaSoftware Develop Kit,后来改名为JDK,即Java DevelopKit。JDK作为Java开发工具包,主要用于构建在Java平台上运行的应用程序、Applet 和组件等。
3、JRE(Java RuntimeEnvironment,Java运行环境),
也就是Java平台。所有的Java程序都要在JRE下才能运行。
4、JVM(Java VirtualMachine,Java虚拟机)
是JRE的一部分。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运
行。使用JVM就是为了支持与操作系统无关,实现跨平台。
接下来,我将按照大家接触这些概念的先后顺序以问答的形式解答大家心中的疑惑。
当我们学习了一定的java基础知识后,开始上机实践的时候,相信大家首先接触到的应该是JDK,于是我们在电脑上安装了JDK,而且也能正常运行。但是对于有一定基础我们,马上脑海中就出现一个问题:
问题一:JDK不是用java编写的嘛,而我们知道所有的Java程序都要有JVM才能运行,但我们并没有安装JVM呀,为什么它却可以运行呢?
JDK的工具是Java程序,也需要JRE才能运行。为了保持JDK的独立性和完整性,在JDK的安装过程中,JRE也是安装的一部分。所以,在JDK的安装目录下有一个名为jre的目录,用于存放JRE文件。而JAVA虚拟机JVM是属于JRE的,所以我们的JDK可以运行。
随着我们学习的深入,我们很快接触了一个一个先进的软件——Eclipse,那么,问题又出来了:
问题二:Eclipse是干什么的?
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
eclipse classic 是eclipse的标准版,也就是eclipse SDK。
问题三:Eclipse IDE和 eclipse SDK有什么区别?
eclipse的标准版叫eclipse SDK,而安装了一些插件(例如:C/C++开发的插件CDT)之后,就变成了Eclipse IDE(Integrated DevelopmentEnvironment,集成开发环境)。
问题四:安装了Eclipse,必须安装JDK才能运行吗?
答案是否定的,Eclipse标准版中包含JRE,所以它可以运行。
问题五:既然安装eclipse,不是必须安装JDK,那么我们为什么要安装JDK?
相信有一定基础的大家一定知道,java的执行过程是先把java编译成class字节码,然后由虚拟机解释执行!而将java编译成class文件,必须用到JDK。所以如果你要从事java开发,就必须要安装JDK(当然,JDK不仅仅有这一个功能)。
当我们到这一步的时候,我们已经可以用Eclipse开发java程序了。但是,我们知道,Eclipse功能很强大,不仅可以开发java程序。如果我想用Eclipse开发C程序,该怎么办呢?(具体搭建过程:Windows 7安装Eclipse 3.7搭建C/C++开发环境)
首先,我们必须安装能将C文件编译成exe可执行文件的软件,软件大家安装MinGW。
问题六:为什么想开发C程序,我们必须安装MinGW等编译软件?
其实,这个同开发java的道理一样,我们要想开发java程序,必须安装能将java编译成class文件的JDK,那么开发C程序呢,我们必须也安装一个类似这样的软件,不同的是,MinGW等是将C文件编译成exe文件。
问题七:有了MinGW,我们是不是就可以用Eclipse开发C程序了呢?
答案是否定的,安装了MinGW,只能说明你的电脑可以编译C文件,但是这跟我Eclipse有什么关系呢?所以,要想开发C程序,必须在Eclipse中安装相应的插件——CDT(C/C++Development Tooling)。
问题八:为什么用Eclipse开发C程序需要安装CDT,而开发java程序却不需要安装什么插件呢?
其实,用Eclipse开发java程序,也是需要插件的,它就是——JDT。那为什么我们没有安装就可以开发java程序了呢?原来,安装Eclipse标准版时,默认就安装了JDT插件,所以不需要我们自己安装就能使用。
相信,当大家看到这里的时候,已经对这些概念以及它们之间的联系有了一定的了解。最后祝大家学习旅途顺利。
PS:不当之处,还望大家指教!
【转】SDK、JDK、JRE、JVM、JDT、CDT等之间的区别与联系 .的更多相关文章
- jdk jre jvm 关系
很多朋友可能跟我一样,已经使用JAVA开发很久了,可是对JDK,JRE,JVM这三者的联系与区别,一直都是模模糊糊的. 今天特写此文,来整理下三者的关系. JDK : Java Development ...
- AJPFX关于JDK,JRE,JVM的区别与联系
很多朋友可能跟我一样,对JDK,JRE,JVM这三者的联系与区别,一直都是模模糊糊的. 今天我们来整理下三者的关系. JDK : Java Development ToolKit(Java开发工具包) ...
- JDK,JRE,JVM区别与联系(ZZ)
http://www.cnblogs.com/hencehong/p/3252166.html 我们开发的实际情况是:我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JD ...
- JDK,JRE,JVM区别与联系-理解与概括
我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析 ...
- JDK,JRE,JVM区别与联系
JDK : Java Development ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工 ...
- 对JDK,JRE,JVM的理解
JAVA用到现在还是分不太清楚JDK,JRE,JVM这三者的区别与联系,一直都是模模糊糊的.所以今天整理下此中的关系. 简单说明:我们编写的.java文件经过JDK(JDK的bin目录下javac.e ...
- JDK JRE JVM
使用java很久,但是一直不清楚JDK,JRE,JVM直接的关系,今天特地梳理一下. JDK:Java Development ToolKit(Java开发工具包),JDK是整个JAVA的核心,包括J ...
- JDK,JRE,JVM区别与联系(转)
JDK : JavaDevelopment ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具 ...
- 老李分享:JDK,JRE,JVM区别与联系
poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-845052 ...
- JDK,JRE,JVM的区别与联系
JDK : Java Development ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工 ...
随机推荐
- Linux的net.ipv4.tcp_timestamps参数
Q1 今天发生了一个奇怪的现象,在家里始终打开公司的网站打开不了,我就齐了怪了,然后我就各种测试,从ping到dig域名,然后再curl,都是没有问题的,但是就是打不开,最好没有办法只能抓包了,从抓包 ...
- MySql的存储过程和触发器
Mysql的存储过程是类似于其它编程语言中的函数的功能,存储过程内部可以使用顺序循环和转移三种基本程序结构,而且整个存储过程可以接受和返回参数. 创建存储过程(procedure)时,因为其内部有以; ...
- 我已经迷失在事件环(event-loop)中了【Nodejs篇】
我第一次看到他事件环(event-loop)的时候,我是一脸懵,这是什么鬼,是什么循环吗,为什么event还要loop,不是都是一次性的吗? 浏览器中和nodejs环境中的事件环是有一些区别的,这里我 ...
- axios在vue项目中的一种封装方法
记录下之前领导封装的axios请求 npm install axios // 安装 单独写个文件配置axios,此处为request.js import axios from 'axios' //自定 ...
- 版本优化-test
版本优化 标签(空格分隔): 测试 需求经手人太多,直接提bug,开发不乐意,跟Leader确认不靠谱,跟PM确认,不熟悉流程,跟第三方PM确认靠谱了,结果被开发三言两语,变成了不改bug 而改需求 ...
- 【Python实践-9】将字符串转化为浮点型
利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456. 思路:计算小数位数--->将字符串中的小数点去掉--->字符串转换为整数-- ...
- 1.ARM嵌入式体系结构与接口技术(Cortex-A8版)
第1章 嵌入式系统基础知识 ---->1.1嵌入式系统的概述 -------->1.1.1嵌入式系统简介 -------->1.1.2嵌入式系统的特点 -------->1.1 ...
- java属性的默认值
String 默认null Boolean默认false int默认0 double默认0.0 类中使用自定义类定义属性默认值:null 在定义属性的时候可以指定默认值
- vue.js编程式路由导航 --- 由浅入深
编程式路由导航 实例中定义一个方法,这个方法绑定在标签上 然后就设置路由跳转 语法 this.$router.history.push('要跳转路由的地址') <!DOCTYPE html> ...
- 页面加载即执行JQuery的三种方法
[1]$(function( ){ }): $(function(){ $("#name").click(function(){ //adding your code here } ...