(第6讲)jdk,jre,JVM

第六讲

由于本人不是计算机专业,但是找工作要找这方面,以前也没有系统的看过书,现在看书,还是发现以前迷糊的其实有很多是基础知识,比如说今天又看到了jdk,,jre,,

当初作为一个白痴实习生,在安装jdk的时候废了很大力气,纠结于安装了jdk 到底还要不要安装jre...其实目前我还是有点迷茫的,


为什么需要jdk?

JDK是java软件开发包的简称,要想开发java程序就必须安装JDK。没有JDK的话,无法编译Java程序。
JDK包含的基本组件包括:
javac – 编译器,将源程序转成字节码
jar – 打包工具,将相关的类文件打包成一个文件
javadoc – 文档生成器,从源码注释中提取文档
jdb – debugger,查错工具
java – 运行编译后的java程序(.class后缀的)

appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
Jconsole: Java进行系统调试和监控的工具
JRE - java程序运行环境


java.exe和javaw.exe的区别
相同点:二者都是Java的虚拟机,用来执行Java程序
区别:javaw.exe运行程序时不会输出控制台信息,
如果是双击打开jar文件的话(假设已经设置好了打开方式),
那么根本就不会出现控制台窗口,主要用来运行带窗体的应用程序,
其中的“w”就是window的意思,所以用它来运行控制台程序时虽不会报错,
但不会输出任何结果。而java.exe无论运行控制台程序,还是运行窗体程序都没有任何问题。
具体http://www.cnblogs.com/liuxianan/archive/2013/01/22/2871158.html


为什么要配置jdk的环境变量?

jdk需要配置的环境变量一般有三个:JAVA_HOME、path和CLASSPATH

1、JAVA_HOME:它指向jdk的安装目录。

作用(大神总结)

一是为了方便引用,比如,JDK安装在C:\jdk1.6.0目录里,则设置JAVA_HOME为该目录路径, 那么以后要使用这个路径的时候, 只需输入%JAVA_HOME%即可, 避免每次引用都输入很长的路径串;
二则是归一原则, 当JDK路径改变的时候, 仅需更改JAVA_HOME的变量值即可, 否则,就要更改任何用绝对路径引用JDK目录的文档, 要是万一没有改全, 某个程序找不到JDK, 后果是可想而知的----系统崩溃!
三则是第三方软件会引用约定好的JAVA_HOME变量, 不然, 你不能正常使用该软件.


2、path:作用是指定命令的路径。即告诉操作系统javac和Java这些相关命令在哪个目录下放着。当设置好path这个环境变量的时候,就可以在任何目录下执行javac和Java命令了。

3、CLASSPATH:作用是指定类的搜索路径。 当我们在开发java程序时需要引用别人写好的类时,要让java解释器知道到哪里去找这个类。通常,sun为我们提供了一些额外的丰富的类包,一个是dt.jar(也就是所谓的java内部包),一个是tools.jar,这两个jar包都位于jdk\lib目录下,所以通常我们都会把这两个jar包加到我们的classpath环境变量中  
(注意,CLASSPATH 中最前面是有个 “.”的,表示当前目录,这样当我们运行java AClass的时候,系统就会先在当前目录寻找AClass文件了。)


说说jdk,,,jre,,,JVM的关系。。

jdk(Java Development Kit:java 开发工具包):JDK是整个JAVA的核心,包括了Java运行环境JRE(Java Runtime Envirnment)、一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。即jdk=jre+Java工具+Java基础库类

JRE(Java Runtime Envirnment:Java运行环境):包含了Java virtual machine(JVM),runtime class libraries和Java application launcher,这些是运行Java程序的必要组件。即JRE=JVM+java核心库类

JVM(java virtual machine:java虚拟机):它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译器(javac.exe)编译为.class文件(字节码文件),字节码文件可以单独拿去运行,这也就是Java的厉害所在,即一次编译到处运行。Java虚拟机(JVM)将这些字节码文件解释为机器码,然后在计算机上运行。 

JVM是Java程序运行的容器,但是他同时也是操作系统的一个进程,因此他也有他自己的运行的生命周期,也有自己的代码和数据空间。
JVM在整个jdk中处于最底层,负责与操作系统的交互,用来屏蔽操作系统环境,提供一个完整的Java运行环境,因此也就虚拟计算机.操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境。

此外Java 程序的字节码文件可以放到任意装有 JRE 的计算机运行,再由不同 JRE 的将它们转化成相应的机器代码,这就实现了 Java 程序的可移植性。因为这种性质,一个项目结束的时候可以只给他你的字节码文件,然后安装一个jre既可以了。(个人理解,不知道对不对)


JVM、javac.exe、java.exe的关系。。

javac编译后得到的class文件是二进制指令,但不是机器指令,而是java虚拟机可识别的指令。这样class文件就有了可移植行。你可以把class文件拿到windows、linux或者solaris等不同的系统上去,在jvm上执行。

java是启动jvm,jvm负责对class文件的内容进行处理,将字节码文件解释或者编译为机器指令,执行。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值