Java基础知识——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就是为了支持与操作系统无关,实现跨平台。

 

 

接下来看一些问答

 

 

问题一

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开发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插件,所以不需要我们自己安装就能使用。

 

 

 

原帖地址: http://blog.csdn.net/xiaoduishenghuogo/article/details/8108467

 

 

目录
相关文章
|
2天前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
|
19天前
|
Java
Java代码解释++i和i++的五个主要区别
本文介绍了前缀递增(++i)和后缀递增(i++)的区别。两者在独立语句中无差异,但在赋值表达式中,i++ 返回原值,++i 返回新值;在复杂表达式中计算顺序不同;在循环中虽结果相同但使用方式有别。最后通过 `Counter` 类模拟了两者的内部实现原理。
Java代码解释++i和i++的五个主要区别
|
27天前
|
Java
通过Java代码解释成员变量(实例变量)和局部变量的区别
本文通过一个Java示例,详细解释了成员变量(实例变量)和局部变量的区别。成员变量属于类的一部分,每个对象有独立的副本;局部变量则在方法或代码块内部声明,作用范围仅限于此。示例代码展示了如何在类中声明和使用这两种变量。
|
1月前
|
Java
Java基础之 JDK8 HashMap 源码分析(中间写出与JDK7的区别)
这篇文章详细分析了Java中HashMap的源码,包括JDK8与JDK7的区别、构造函数、put和get方法的实现,以及位运算法的应用,并讨论了JDK8中的优化,如链表转红黑树的阈值和扩容机制。
27 1
|
1月前
|
存储 缓存 Java
【用Java学习数据结构系列】HashMap与TreeMap的区别,以及Map与Set的关系
【用Java学习数据结构系列】HashMap与TreeMap的区别,以及Map与Set的关系
37 1
|
30天前
|
Java
Java代码解释静态代理和动态代理的区别
### 静态代理与动态代理简介 **静态代理**:代理类在编译时已确定,目标对象和代理对象都实现同一接口。代理类包含对目标对象的引用,并在调用方法时添加额外操作。 **动态代理**:利用Java反射机制在运行时生成代理类,更加灵活。通过`Proxy`类和`InvocationHandler`接口实现,无需提前知道接口的具体实现细节。 示例代码展示了两种代理方式的实现,静态代理需要手动创建代理对象,而动态代理通过反射机制自动创建。
|
1月前
|
缓存 算法 Java
Java 中线程和纤程Fiber的区别是什么?
【10月更文挑战第14天】
69 0
|
1月前
|
存储 安全 Java
jvm 锁的 膨胀过程?锁内存怎么变化的
【10月更文挑战第3天】在Java虚拟机(JVM)中,`synchronized`关键字用于实现同步,确保多个线程在访问共享资源时的一致性和线程安全。JVM对`synchronized`进行了优化,以适应不同的竞争场景,这种优化主要体现在锁的膨胀过程,即从偏向锁到轻量级锁,再到重量级锁的转变。下面我们将详细介绍这一过程以及锁在内存中的变化。
37 4
|
11天前
|
Arthas 监控 Java
JVM进阶调优系列(9)大厂面试官:内存溢出几种?能否现场演示一下?| 面试就那点事
本文介绍了JVM内存溢出(OOM)的四种类型:堆内存、栈内存、元数据区和直接内存溢出。每种类型通过示例代码演示了如何触发OOM,并分析了其原因。文章还提供了如何使用JVM命令工具(如jmap、jhat、GCeasy、Arthas等)分析和定位内存溢出问题的方法。最后,强调了合理设置JVM参数和及时回收内存的重要性。
|
9天前
|
Java Linux Windows
JVM内存
首先JVM内存限制于实际的最大物理内存,假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制。
8 1
下一篇
无影云桌面