为什么要设置环境变量以及JDK和JRE的区别

转载请标明出处:http://blog.csdn.net/xx326664162/article/details/49426339 文章出自:薛瑄的博客

你也可以查看我的其他同类文章,也会让你有一定的收货!

为什么要设置Java环境变量

今天为止对环境变量的设置还不是很懂,而且网上的大部分资料几乎都是设置方法,没有说原因。今天学Linux,遇到了Java环境变量的设置,无意间找到了详细透彻讲解Java环境变量的设置。

 
  1. PATH环境变量。作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把 jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好 PATH变量后,就可以在任何目录下执行javac/java等工具了。
  变量设置:
  %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

  2. CLASSPATH环境变量。作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPTH来寻找类的。
  变量设置:
  .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一点)

  3. JAVA_HOME环境变量。它指向jdk的安装目录,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。
  变量设置:
  E:\Java\jdk1.7.0

这篇博文的思路有些模糊

参考

1. 定义

JRE(Java Runtime Enviroment)是Java的运行环境。面向Java程序的使用者,而不是开发者。JRE是运行Java程序所必须环境的集合
JRE有以下内容:

  • Java虚拟机
  • Java平台核心类和支持文件
  • 它不包含开发工具(编译器、调试器等)。

JDK(Java Development Kit)又称J2SDK(Java2 Software Development Kit),是Java开发工具包,如果你下载并安装了JDK,那么你不仅可以开发Java程序,也同时拥有了运行Java程序的平台。JDK是整个Java的核心

  • 提供了Java的开发环境(tools.jar等等)
  • 包括了Java运行环境(JRE)(提供了JVM和Runtime辅助包,用于解析class文件使其得到运行)

2. 区别

JRE主要包含:

  • java类库的class文件(都在lib目录下打包成了jar)
  • 虚拟机(jvm.dll);

    JDK主要包含:

  • java开发环境

  • JRE

那么为什么JDK要自带一个JRE呢?

记得在环境变量path中设置jdk/bin路径麽?不设置javac和java是用不了的。确实jdk/bin目录下包含了所有的命令。

明明没有设置jre/bin目录到环境变量中啊?

安装jre的时候安装程序自动帮你把jre的java.exe添加到了系统变量中,验证的方法很简单,去Windows/system32下面去看看吧,发现有一个java.exe。

在安装jdk的时,如果没有进一步安装jre,那么就会执行jdk/bin中的java.exe了。当然要在Path中配置了才行。

3. 难点

如果安装了JDK,你的电脑就有两套JRE(JRE本身和JDK中的JRE)

(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),而制作的目的是为了让开发者免于输入太长的指命。
  • 可以发现/bin目录下的程序都很小,不大于29K,JDK里的工具几乎是用Java所编写,所以也是Java应用程序,因此要使用JDK所附的工具来开发Java程序。位于JDK目录下的那套JRE是用来运行一般Java程序的。

(2) 如果一台电脑安装两套以上的JRE,谁来决定呢?
这个重大任务就落在java.exe身上。java.exe的工作就是找到合适的JRE来运行Java程序。
java.exe依照以下的顺序来查找JRE:

  1. 自己的目录下有没有JRE;
  2. 父目录有没有JRE;
  3. 查询注册表[HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment]。

所以java.exe的运行结果与你的电脑里面哪个JRE被执行有很大的关系。

(3)JDK–>JRE–>Bin目录下有个文件夹:server(参考处说有两个文件夹,但是我只看到一个),这是真正的jvm.dll所在。jvm.dll无法单独工作,当jvm.dll启动后,会使用explicit的方法(就是使用Win32 API之中的LoadLibrary()与GetProcAddress()来载入辅助用的动态链接库),而这些辅助用的动态链接库(.dll)都必须位于jvm.dll所在目录的父目录之中。因此想使用哪个JVM,只需要设置PATH,指向JRE所在目录下的jvm.dll。

4.

最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。

参考
http://www.cnblogs.com/wangchenyang/archive/2011/08/17/2143620.html
环境变量设置参考

关注我的公众号,轻松了解和学习更多技术
这里写图片描述

发布了244 篇原创文章 · 获赞 799 · 访问量 234万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 代码科技 设计师: Amelia_0503

分享到微信朋友圈

×

扫一扫,手机浏览