您的位置:首页 > 编程语言 > Java开发

Java的一些基本概念

2016-09-19 16:12 211 查看
JRE和JDK的区别浅析

JRE和JDK的含义是什么呢?让我们从他们各自的概念开始吧。

JDK 是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK.最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率要比Sun JDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun
JDK好很多。但不管怎么说,我们还是需要先把Sun JDK掌握好。

JDK一般有三种版本:SE(J2SE),standard edition,标准版,是我们通常用的一个版本EE(J2EE),enterpsise edtion,企业版,使用这种JDK开发J2EE应用程序,ME(J2ME),micro edtion,主要用于移动设备、嵌入式设备上的java应用程序Java开发工具(JDK)是许多Java专家最初使用的开发环境。尽管许多编程人员已经使用第三方的开发工具,但JDK仍被当作Java开发的重要工具。JDK由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。其核心Java
API是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。Java API包括一些重要的语言结构以及基本图形,网络和文件I/O.一般来说,Java API的非I/O部分对于运行Java的所有平台是相同的,而I/O部分则仅在通用Java环境中实现。

作为JDK实用程序,工具库中有七种主要程序。

Javac:Java编译器,将Java源代码转换成字节码。

Java:Java解释器,直接从类文件执行Java应用程序字节代码。

appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。 Javadoc:根据Java源码及说明语句生成HTML文档。

Jdb:Java调试器,可以逐行执行程序,设置断点和检查变量。

Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。 Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。 JRE

JRE(Java Runtime Environment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。是Sun的产品,包括两部分:JavaRuntimeEnvironment和

JavaPlug-inJavaRuntimeEnvironment(JRE)是可以在其上运行、测试和传输应用程序的Java平台。它包括Java虚拟机、Java平台核心类和支持文件。它不包含开发工具——编译器、调试器和其它工具。JRE需要辅助软件——JavaPlug-in——以便在浏览器中运行applet.J2RE是Java2 Runtime Environment,即Java运行环境,有时简称JRE.如果你只需要运行Java程序或Applet,下载并安装它即可。如果你要自行开发

Java软件,请下载JDK.在JDK中附带有JRE.注意由于Microsoft对Java的支持不完全,请不要使用IE自带的虚拟机来运行 Applet,务必安装一个JRE或JDK.

那么以上就是对于JRE和JDK的概念以及区别的介绍,希望你对他们有了一定的了解。

【编辑推荐】

1. 在JDK7 b50中将实现正则表达式命名捕获组

2. JDK的安装图解与环境变量设置详解

3. JDK与JRE的关系和path的作用浅谈

4. JDK、SDK、JRE、JVM概念详解

5. 安装JDK后JRE与JVM联系浅谈

JDK、SDK、JRE、JVM概念详解

JDK、SDK、JRE、JVM概念的理解是什么呢?我们经常在进行初级学习的时候JDK、SDK、JRE、JVM概念老是混淆,那么本文讲给你点启示。

AD:





51CTO云计算架构师峰会 抢票进行中!





JDK、SDK、JRE、JVM概念的认识我们可以通过HelloWorld来理解这几个缩写词的具体含义:

1.

2.

3.

4.

5. public class HelloWorld { public static void main(String[] args) { System.out.println("helloworld"); } }

编译之后, 我们得到了HelloWorld.class(图中的"Your program's class files")

在HelloWorld里面, 我们调用了 JAVA API中的 java.lang.System这个类的静态成员对象 out, out 的静态方法: public static void println(String string);

然后我们让虚拟机器来执行这个HelloWorld。

1. 虚拟机会在classpath中找到HelloWorld.class。

2. 虚拟机中的解释器(interpret)会把HelloWorld.class解释成字节码。

3. 把解释后的字节码交由execution engin执行。

4. execution engin会调用native method(即平台相关的字节码)来在host system的stdout(显示器)的指定部分打印出指定的字符串。

5. 这样, 我们就看到"helloworld"字样了。

有了这个流程后, 我们就好理解上面几个术语了:

◆JDK: Java develop kit (Java 开发包)

◆SDK: software develop kit, 以前JDK 叫做Java software develop kit, 后来出了1.2版本后, 就改名叫JDK了, 省时省力, 节约成本。

◆JRE. Java runtime environment 我们的helloworld必须在JRE(Java运行环境,Java运行环境又叫Java平台)里面, 才能跑起来。 所以, 显然地, JRE其实就是JDK + JVM

◆JVM Java virtual machine. 简单地讲, 就是把class文件变成字节码, 然后送到excution engin中执行。 而为什么叫虚拟机, 而不叫真实机呢? 因为JVM本身是又不能运算, 又不能让显示器显示"helloworld"的, 它只能再调用host system的API, 比如在w32里面就会调c++的API, 来让CPU帮他做做算术运算, 来调用c++里面的API来控制显示器显示显示字符串。 而这些API不是JDK里面有的,我们平时又看不见的,所以我们就叫它native api了

◆解释平台无关。 有人会说, 在linux的里面调用native api与w32里面调用的api肯定不一样吧? 那为什么说Java是平台无关的呢?

其实是这样的, 君不见java.sun.com里面又有jdk-for-w32又有jdk-for-linux下载吗? 刚才不是说了吗? native api, native api, 就是我们平时看不见的api吗! 调用native这些烦琐的活儿都让jdk去做了。 所以我们调用的时候只用知道jdk(Java api) 里面的java.io.*能提供磁盘访问功能, java.awt.* 能画个框框画个圆圆就行了吗。 至于JDK又是怎么调用的, 在LINXU上更圆呢? 还是在W32上更圆,这个就是JDK个人的事情了。(理论上讲是一样圆的,
当然这又和显示器是否纯平相关了)

同时, 这里就引申出了另一个话题。 既如何编写平台无关的Java程序。 其中关键的一条, 就是调用且只调用jdk中的API, 而不要私自调用native api。 原因很简单啊, JDK-for-linux和JDK-for-w32表面都是一样的, 所以我在w32里面调用JDK写的Java程序,在linux里面也会一样的写法啊, 所以就可以移植来移植去都没问题。但是如果我在w32里面调用了 一个图形显示的native api, 当我移植到linux

去的时候, 谁又能保证里面也有相同名称, 相同参数,相同返回值, 相同功能的native api供我调用

呢!

以上就是JDK、SDK、JRE、JVM概念详解的介绍,其中的含义还需要慢慢琢磨... ...

【编辑推荐】

1. JDK1.4在Windows下的环境配置

2. JDK1.6在LINUX下的安装配置

3. JDK1.5中新的语言特征浅析

4. 在JDK7 b50中将实现正则表达式命名捕获组

5. JDK日志框架介绍及其主要功能浅析 JAVA版本中的JDK与JRE的区别

作者:佚名 文章来源:本站原创 点击数:3110 更新时间:2009-4-2

JRE是JAVA运行环境

JDK是开发工具包

JDK就是java2 SDK的曾用名,后来sun公司将其改为了Java 2 SDK,你从SDK的英文原文就能看出来了,Software Develope kit软件开发工具集。

------------

JRE 提供一个应用执行的具体环境,包涵 JVM 和另外一些提供功能的包,它允许在你的机器上运行编译过的java class程序

----------------

jdk是java开发工具包,是开发JAVA程序用的,JRE是JAVA运行环境,是运行JAVA程序所需要的环境

JDK多了javac等编译工具。

--------------------

JDK (Java Develop Kit) JAVA开发工具包 是使用JAVA语言运行在JVM上的开发包。

SDK (Software Develop Kit) 软件开发工具包 泛指很多类型软件的开发包,比如说JDK也是一种SDK,微软公司最近推出的有.net sdk,就是说他公布的SDK是用于.NET开发的。

---------------------

jdk和sdk是一个东西!只是新旧不同的叫法 可以通用啦

我觉得书里所指的JDK应该就是比较普遍使用的SDK。

JDK 翻译是 java development kit.包括JEE,JSE,JME等编辑工具。

SDK 翻译是 standard development kit.是相对于JEE与JME而言的。即JSE。

至于SDK下编辑的程序能不能到JDK下编译,就不清楚了,因为我觉得准确说来JDK并不是一个工具,而是一系列工具的总称吧。

---------------------------

jdk= java sdk

sdk=software development kit

so jdk is a kind of sdk

------------------------

J2SDK包应该比JDK包,多包含了JRE包

=============================================

jdk是java开发工具包,而sdk是以jdk为基础的,分为j2se,j2me和j2ee,那么这两者之间有什么关系呢?(我刚刚接触java,有些概念问题弄不太清楚,请不要见笑)另外如果要搭建一个完整的java程序开发环境,需要在操作系统、应用服务器和数据库服务器上作哪些准备呢,还需要准备哪些开发软件,最后对于一个刚刚学习java的人来说,应该看些什么java方面的书呢(是不是要看java的学习教程之类的书呢?) ========================================

sdk是jdk的扩充吧!

j2se是j2ee的核心,j2ee是以j2se为基础进行开发的,而j2me则是j2 micro Edition。如果要搭建完整的环境,首先需要安装jdk,然后用editplus或者jBuilder作为开发工具。应用服务器可以用Bea weblogic、Ibm websphere,数据库可以用oracle,mysql,sqlserver等。刚学习的人,最好看一下Thinking in java(这本书挺不错的),另外可以看j2ee 核心技术!最好去中国ibm的网站看一些教程,挺不错的!

=================

SDK是 Software Development Kit, 软件开发工具包

JDK是 Java Developer's Kit java开发工具包

JDK是一种SDK
http://java.sun.com/downloads.html
======================================

(一)JDK,SDK名称:

JDK是SUN公司提供的Java开发工具(Java Development Kits)的总称.它包括最早的版本,即1995年的beta版,直到最新的,2002年才发布的1.

4.1版,通统可叫JDK.

Java和JDK的Versions(版本)名称:

Java语言发展到1998年的1.2版,相对于此前的各版有很大改进,为此,SUN把1.2版的JAVA 称为Java 2,标志JAVA语言已成熟,相应的开发工具也常改称 Java 2 SDK(JAVA 2 Software Development Kit). 此后JDK虽又进一步升为1.3和1.4等更高版本,但名称仍然都叫JAV

A 2,没有改叫 JAVA 3或 JAVA 4,而相应的开发工具也仍然都叫 Java 2 SDK.

Java 2 SDK的Editions:

Java 2 SDK按用途的不同,又分三种类型的edition,这就是:

Java 2, Sdandard Edition - 简称J2SE, 是Java 2的标准版;用于桌面系统或一般商务系统软件的开发.

Java 2, Enterprise Edition - 简称J2EE, 是Java 2的企业版; 用于要求较高的企业商务软件的开发.

Java 2, Micro Edition - 简称J2ME, 是Java 2的微型版;用于电话,电视,汽车等家用电器中所需软件的开发.

(二)JDK下载:

jdk下载地址:java.sun.com

以上地址是下载Java最重要的地址,是Java的大本营.但可能极不方便,原因是sun的产品太多太多!一下子是难找到位置的.

你如感到不便,也可到我的网站:www.zzwu.net/java下载,方便极了.所用版本是目前用的最普遍的Java 2 SDK 1.3.1.

======================

j2ee JAVA企业开发包

j2se JAVA标准开发包

=========================

jdk java develop kit

sdk sun develop kit

sdk 不是上面那样的是java standard develop kit,sdk是sun 的市场人员在java2推出时起的名字

=============================

不耻下问是一个褒义词,现在被人认为是自以为是了!

这种问题只要找出全拼就不用解释了

SDK=Software Development Kit

JDK=JSDK=Java SDK=Java Software Development Kit

=============================

Re:jdk-1_5_0_0和j2sdk-1_4_2_1

没有区别 主要是JDK版本问题 不知为什么 JDK高对低的支持不是很好 低版本的CLASS在高版本的JDK下是不能运行的 再加上JDK1.5可以说是一个变化非常大的版本 所以有可能会出现好多问题

建议 一般都是在哪个JDK编写 在哪个JDK运行 还是不要换JDK的好

============================================================

概念混乱关于jdk,j2sdk,j2eesdk,jre,彻底晕~~~~《新人必读贴》

jdk是java devolop kit -- java开发包

j2sdk是java 2 software devolop kit -- java2软件开发包

实际上jdk和j2sdk是基本同样的。

j2sdk呢有几个版本对应于java2的几个版本,其中j2ee需要用到开发工具就是J2eesdk了,只不过大部分应用服务器(weblogic jboss等)都内置了j2eesdk。

当然了,j2sdk标准版是基础,所以要安装先;j2eesdk因为是企业应用嘛,所以是注册后才能下载

至于jre是java runtime envionment -- java运行环境,jdk中包括了它,但是对于不需要开发只是运行的用户是可以只单独安装jre的,所以sun提供了jre的下载。

JDK和J2SDk:

J2SDk包含了Java Development kit(JDK)、Java Runtime Environment(JR

E)和Java Plug-in。原先sun的JAVA软件开发工具包是JDK,现在就称为J2SDk了。

JRE和plug-in:JRE包含了java plug-in。

sun的java网站上就单独提供J2SDK和JRE各种版本的下载,J2SDk是提供给开发JAVA程序所

用,应用程序用户是不需要开发工具的。而JRE顾名思义是JAVA程序要运行所需要的环境

,所谓跨平台就是要各种平台都有一个中间代理,那就是JRE。一般采用JAVA技术开发出





jdk与jre的区别

很多程序员已经干了一段时间java了依然不明白jdk与jre的区别。

JDK就是Java Development Kit.简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。

JRE是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。

如果安装了JDK,会发同你的电脑有两套JRE,一套位于 \jre 另外一套位于 C:\Program Files\Java\jre1.5.0_15 目录下,后面这套比前面那套少了Server端的Java虚拟机,不过直接将前面那套的Server端Java虚拟机复制过来就行了。而且在安装JDK可以选择是否安装这个位于 C:\Program Files\Java 目录下的JRE。如果你只安装JRE,而不是JDK,那么只会在 C:\Program Files\Java 目录下安装唯一的一套JRE。

JRE的地位就象一台PC机一样,我们写好的Win32应用程序需要操作系统帮我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。所以当你装完JDK后,如果分别在硬盘上的两个不同地方安装了两套JRE,那么你可以想象你的电脑有两台虚拟的Java PC机,都具有运行Java程序的功能。所以我们可以说,只要你的电脑安装了JRE,就可以正确运行Java应用程序。

1、为什么Sun要让JDK安装两套相同的JRE?

这是因为JDK里面有很多用Java所编写的开发工具(如javac.exe、jar.exe等),而且都放置在 \lib\tools.jar 里。从下面例子可以看出,先将tools.jar改名为tools1.jar,然后运行javac.exe,显示如下结果: Exception in thread "main"

java.lang.NoClassDefFoundError: com/sun/tools/javac /Main 这个意思是说,你输入javac.exe与输入 java -cp c:\jdk\lib\tools.jar com.sun.tools.javac.Main 是一样的,会得到相同的结果。从这里我们可以证明javac.exe只是一个包装器(Wrapper),而制作的目的是为了让开发者免于输入太长的指命。而且可以发现\lib目录下的程序都很小,不大于2 9K,从这里我们可以得出一个结论。就是JDK里的工具几乎是用Java所编写,所以也是Java应用程序,因此要使用JDK所附的工具来开发Java程序,也必须要自行附一套JRE才行,所以位

于C:\Program Files\Java目录下的那套JRE就是用来运行一般Java程序用的。

2、如果一台电脑安装两套以上的JRE,谁来决定呢?

这个重大任务就落在java.exe身上。Java.exe的工作就是找到合适的JRE来运行Java程序。 Java.exe依照底下的顺序来查找JRE:自己的目录下有没有JRE;父目录有没有JRE;查询注册表: [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment] 所以java.exe的运行结果与你的电脑里面哪个JRE被执行有很大的关系。

ADD:(小小结)

1.JVM -- java virtual machineJVM就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。2.JRE -- java runtime environmentJRE是指java运行环境。光有JVM还不能成class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。在JDK的安装目录里你可以找到jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和
lib和起来就称为jre。所以,在你写完java程序编译成.class之后,你可以把这个.class文件和jre一起打包发给朋友,这样你的朋友就可以运行你写程序了。(jre里有运行.class的java.exe)

3.JDK -- java development kitJDK是java开发工具包,基本上每个学java的人都会先在机器上装一个JDK,那他都包含哪几部分呢?让我们看一下JDK的安装目录。在目录下面有六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行java时起作用的是以下四个文件夹:bin、include、lib、 jre。现在我们可以看出这样一个关系,JDK包含JRE,而JRE包含JVM。bin:最主要的是编译器(javac.exe)include:java和JVM交互用的头文件lib:类库jre:java运行环境(注意:这里的bin、lib文件夹和jre里的bin、lib是不同的)总的来说JDK是用于java程序的开发,而jre则是只能运行class而没有编译的功能。
eclipse、idea等其他IDE有自己的编译器而不是用JDK bin目录中自带的,所以在安装时你会发现他们只要求你选中jre路径就ok了。

对于学习有困难不知道如何提升自己可以加扣:578024144 进行交流得到帮助,获取学习资料
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: