博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java环境的搭建
阅读量:7041 次
发布时间:2019-06-28

本文共 2803 字,大约阅读时间需要 9 分钟。

hot3.png

首先我们应该对 JDK,JRE,JVM 有所认知,下面这个图就可以清晰的表述他们的关系:

JDK,JRE,JVM 的关系

一个更复杂的图:这是 J2SE 1.5  具体功能图表,在图的左边,我们可以清晰的看出哪些是JVM的范畴,哪些是JRE的范畴,哪些是JDK的范畴。

Java程序的执行逻辑

下面图演示的是如何打造一个个性化的Java启动器,这对我们理解Java执行的逻辑很有帮助。下图是以Window环境打造个性化的Java启动器的例子。

这幅图来自:  

最常见的启动器是Sun在Java Runtime Environment的/bin目录中提供的启动器,就Windows平台而言,它们是java.exe和javaw.exe。前者运行时打开两个窗口:一个是接收System.out/err和启动器输出的控制台窗口,另一个是Java程序本身的窗口;javaw运行时不打开控制台窗口。

在J2SE/EE平台中,虚拟机以动态库的形式实现,也放在/bin目录下。动态库的名字在Windows中是java.dll,在Unix中是java.so。所谓“装入虚拟机”,就是指装入这个动态库。

找这个动态库的逻辑是依次按照下面搜索先后顺序去寻找:

  • 先找当前目录下有没有JRE
  • 再找父目录下有没有JRE
  • 接着在PATH路径中找JRE
  • 注册表HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment/ 查看CurrentVersion的键值指向哪个JRE(这当然是windows下特有的。)

这不像 .Net ,.Net 引入了全局应用缓存(GAC),一台机子,一个版本的 .Net Framework 就只有一套,就在GAC中,不用考虑这个寻找逻辑。

 

JRE 类库的寻找

JRE自带的基础类库主要是JRE/lib/rt.jar这个文件,包括了Java2平台标准版的所有类库。和JRE的版本一致。

JRE中由ClassLoader负责查找和加载程序引用到的类库,基础类库ClassLoader会到rt.jar中自动加载,其它的类库,ClassLoader在环境变量CLASSPATH指定的路径中搜索,按照先来先到的原则,放在CLASSPATH前面的类库先被搜到.

Java程序启动之前建议先把PATH和CLASSPATH环境变量设好。OS通过PATH来找JRE,确定基础类库rt.jar的位置。JRE的ClassLoader通过CLASSPATH找其它类库。

 

 

JDK 的安装

去  下载最新版本 JDK。 下载后安装。 

Windows 下安装完毕后需要设置三个环境变量

JAVA_HOME

指明JDK安装路径,就是刚才安装时的路径C:/Program Files/Java/jdk1.6.0_19,此路径下包括lib,bin,jre等文件夹(此变量最好设置,因为以后运行tomcat,eclipse,ant 等都需要使用此变量)

PATH

Path使得系统可以在任何路径下识别java命令,设为:

%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin

CLASSPATH

CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别,设为:

.;%JAVA_HOME%/lib;%JAVA_HOME%/lib/tools.jar

(要加.表示当前路径) 

%JAVA_HOME%就是引用前面指定的JAVA_HOME。

Linux 下则是要做如下设置(以我使用的 ubuntu 为例):

下载完后,我们就开始安装了。(我们假设下载后的文件名为jdk1.6.bin) 

在命令行下打开其所在文件夹,打chmod u+x ./jdk1.6.bin   (更改可执行权限:u 表示该档案的拥有者,+ 表示增加权限,x 表示可执行) 
然后./jdk1.6.bin 
看到协议,一直敲Down键或者Enter键(协议还挺长的) 
最后看到 
Do you agree to the above license terms? [yes or no] 
寻问是否接受,当然是打y 回车拉~ 
然后就看到它解压缩 
解压缩完后的默认文件名是jdk1.6.0 
接着打 
sudo cp –r  jdk1.6.0 /usr/     (cp -r : 递归持续复制,用于目录的复制行为。) 
把它复制到usr目录里去 
好了,到这里就只差配置环境了 
export JAVA_HOME=/usr/jdk1.6.0 
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib 
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin 
打vi ~/.bashrc  (vi 的命令参看:) 
进入用户环境变量配置界面中,把上面的三行加入到最后,ESC,:wq 
保存并退出 
这样JDK就算配置好了~

参看: 

 
 
 

 

之后我们就可以写一个超简单的java程序。

依次: javac Test.java

java Test

来测试是否可以正常运行。

 

Eclipse 中我们也可以设置JDK的版本,

在我们的项目上右键Properties –> Java Compiler中将 –>  Compiler compliance level 设成我们需要的版本即可。

需要注意的是:Eclipse不自带jdk,它只需要jre就可以运行(不需要javac),因为它自带编译器(plugin目录里有compile包)。

在运行时,则是由于JRE安装时已经在环境中添加java这个命令(无论windows还是Linux),eclipse便利用它启动startup.jar。但如果只用jre,因为没有源代码,eclipse就不能根据源码生成库中type的注释了。

 

如何查看当前Java运行环境的版本?

在命令行下面使用 java -fullversion 可以对当前版本的。 

 

参考资料:

JDK,JRE,JVM,三者的区别与联系 

SDK、JDK、JRE和JVM的关系总结 

初步总结CLR和JRE运行机制 

如何让java运行在指定版本的JRE中。 

怎样运行JAVA程序 

java程序运行机制及运行过程 

关于JDK 

打造个性化Java启动器 

Linux系统下运行JAVA程序 JRE安装和配置 

JDK、JRE、JVM之间的关系 

JDK下载安装及其环境变量配置 

Eclipse的编译器和Sun的javac还真不太一样 

Eclipse设置项目jdk的问题 

转载于:https://my.oschina.net/zhangjie830621/blog/97604

你可能感兴趣的文章
《Excel 职场手册:260招菜鸟变达人》一第 8 招 怎样在多张工作表录入相同的数据——创建工作组...
查看>>
《C语言及程序设计》实践项目——用break和continue改变流程
查看>>
The total number of locks exceeds the lock table size错误(已纠正)
查看>>
maven2完全使用手册
查看>>
SQL应用与开发:(一)导论和环境
查看>>
简单封装quartz实现任务调度的配置和管理
查看>>
Android Matrix详解
查看>>
JVM 堆栈区域数据存放流程
查看>>
【MyBatis框架】配置文件-resultMap总结
查看>>
JSP生成验证码
查看>>
浏览器的窗口位置和大小
查看>>
Path实现常见toolbar点击弹出菜单效果
查看>>
介绍Spring Cloud微服务架构的核心特性
查看>>
剥开比原看代码(六):比原是如何把请求区块数据的信息发出去的
查看>>
小猿圈linux之linux基础命令大全(一)
查看>>
当经历所有大厂的实习面试过后
查看>>
从BEC“代币蒸发”事件看智能合约编写注意事项
查看>>
CentOS 7 Minimal 安装 LXQT
查看>>
机器码 指令 汇编语言 的关系
查看>>
摸索 JS 内深拷贝的最佳实践
查看>>