我们在安装一些linux服务的时候,我们经常会看到遇到需要依赖一些java环境,然后我们一般就是安装jdk来解决java环境依赖。但是如果安装服务多了的话,我们就会发现在安装jdk的时候,jdk不止有版本的不同,还有分支的不同。目前我所接触到的jdk分支有oracle jdk和open jdk。可能有时候也会接触到sun jdk。不过sun jdk也是oracle jdk.这里就不做过多解释。
讲到不同分支的jdk,我这里就讲下java环境,为什么在安装某些Linux服务的时候为什么需要依赖java环境.我这边讲通俗一点就是这些服务或者这些服务中的插件是用java写的,如果要保证服务的运行,就要依赖java环境对其服务的源码进行编译。那为什么会有open jdk 和oracle jdk呢,这是因为他们用的协议不一样,他们的区别可以参考其他资料。我这里就讲一下我的理解,就是oracle jdk有很多特性open jdk没有,导致如果依赖oracle jdk的服务用了open jdk 会导致很多源码不能编译。一句话OpenJDK是Oracle JDK的精简版本。
1.什么是jdk
JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。
JDK包含了一批用于Java开发的组件,其中包括:
javac:编译器,将后缀名为.java的源代码编译成后缀名为“.class”的字节码
java:运行工具,运行.class的字节码
jar:打包工具,将相关的类文件打包成一个文件
javadoc:文档生成器,从源码注释中提取文档,注释需匹配规范
jdb debugger:调试工具
jps:显示当前java程序运行的进程状态
javap:反编译程序
appletviewer:运行和调试applet程序的工具,不需要使用浏览器
javah:从Java类生成C头文件和C源文件。这些文件提供了连接胶合,使Java和C代码可进行交互。
javaws:运行JNLP程序
extcheck:一个检测jar包冲突的工具
apt:注释处理工具
jhat:java堆分析工具
jstack:栈跟踪程序
jstat:JVM检测统计工具
jstatd:jstat守护进程
jinfo:获取正在运行或崩溃的java程序配置信息
jmap:获取java进程内存映射信息
idlj:IDL-to-Java编译器。将IDL语言转化为java文件
policytool:一个GUI的策略文件创建和管理工具
jrunscript:命令行脚本运行
JDK中还包括完整的JRE(Java Runtime Environment),Java运行环境,也被称为private runtime。包括了用于产品环境的各种库类,如基础类库rt.jar,以及给开发人员使用的补充库,如国际化与本地化的类库、IDL库等等。
JDK中还包括各种样例程序,用以展示Java API中的各部分。
2.java环境的部署配置
那么java环境又该怎么配置呢,这边配置的的方法比较多,比如yum的方式,rpm包的方式,jdk压缩包的方式。下面我就来一一介绍一下。
1.yum安装
默认linux系统是自带jdk的,不过是open jdk,所以我这里为了方便,我先卸载系统自带的jdk,然后演示怎么安装。
我们先看当前系统jdk的版本:java -version
在看一下已安装的java的软件包:yum list installed | grep java
接下来我们根据上图中已安装的java软件包把系统自带的jdk版本卸载掉。卸载完在检查一下看有没有卸载成功。
[root@localhost ~]# yum -y remove java-1.8.0-openjdk*
输出省略
[root@localhost ~]# java -version
-bash: /usr/bin/java: No such file or directory
从上面的结果,我们看出自带的jdk版本已经卸载成功。接下来就是演示如何用yum安装jdk。提示用yum安装jdk配置java环境的方式,不需要配置环境变量。
我们先查看我们配置的yum库中java安装包:yum -y list java*
然后根据yum库里jdk版本,安装自己需要的jdk版本:yum -y install java-1.8.0-openjdk* 。然后检查是否安装成功。
(安装完成后的默认目录为/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64/jre/bin/java)
[root@localhost ~]# yum -y install java-1.8.0-openjdk* Loaded plugins: fastestmirror Repository base is listed more than once in the configuration Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com Resolving Dependencies --> Running transaction check ---> Package java-1.8.0-openjdk.x86_64 1:1.8.0.232.b09-0.el7_7 will be installed ---> Package java-1.8.0-openjdk-accessibility.x86_64 1:1.8.0.232.b09-0.el7_7 will be installed --> Processing Dependency: java-atk-wrapper(x86-64) for package: 1:java-1.8.0-openjdk-accessibility-1.8.0.232.b09-0.el7_7.x86_64 ---> Package java-1.8.0-openjdk-accessibility-debug.x86_64 1:1.8.0.232.b09-0.el7_7 will be installed ---> Package java-1.8.0-openjdk-debug.x86_64 1:1.8.0.232.b09-0.el7_7 will be installed 余下省略 [root@localhost ~]# java -version openjdk version "1.8.0_232" OpenJDK Runtime Environment (build 1.8.0_232-b09) OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)
从上面的结果我们看出java环境已经配置完成。
2.RPM包的方式安装
通过rpm安装之前,我们用上面卸载自带jdk的方式,卸载掉我们yum安装的jdk。上面我们也介绍了,open jdk可能不能达到我们对java环境的依赖需求。这个时候我们就需要安装oracle jdk。那么我们就可以按照自己的需要去这个地址下https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html下载我们需要的jdk包,通过rpm的方式或者jdk压缩包的方式安装oracle jdk。
我这里为了方便选择了把接下来的演示jdk压缩包安装方式配置Java环境的包也安装下来的。包下载完成后通过xftp的方式传到我们要配置java环境的服务器下。我这里放到了/devops目录下
好了,我们先来演示一下rpm包安装的方式:rpm -ivh jdk-8u241-linux-x64.rpm
(默认安装在/usr/java目录下,不用配置环境变量)
安装好我们检查一遍,发现java环境已经配置完成。
3.rpm安装的方式如何切换版本
这里我们在介绍一下在平时的生产中通过rpm包安装配置java环境时候,遇到频繁需要切换jdk版本的情况,如果像上面一样先卸载老版本,在安装新版本,这样固然可以,但是过程过于繁琐,有时还可能会因为老版本卸载的不彻底,导致出现各种报错。这里我就介绍一下我常用的方法:
这里我们到刚刚的jdk安装目录下
通过上图我们可以看出一个系统中可以安装两个java环境,通过上图中的红框中的软连接就可以指定你需要jdk版本。这里的jdk.1.7.0_80就是我按照上面rpm安装java环境的步骤安装的,不过这里我安装的时候并没有把系统中已经安装的jdk8卸载掉。这里jdk7的安装步骤我这里就不做演示了。这里如果如果想通过更换软连接的方式切换jdk版本,还需要配置全局变量。配置如下:
[root@centos7 java]# vim /etc/profile.d/jdk.sh [root@centos7 java]# cat /etc/profile.d/jdk.sh export JAVA_HOME=/usr/java/default export PATH=$JAVA_HOME/bin:$PATH [root@centos7 java]#. /etc/profile.d/jdk.sh
配置完以后,只需要通过切换软链接就可以达到切换java环境版本的需求。如下图。
ln是创建链接的命令,默认创建硬链接加上-s的选项就可以创建软链接,后面的参数,前面填源文件目录,后面填链接目录。
4.JDK压缩包的方式安装(生产中个人最推荐的方法,因为可以指定安装目录,也是最稳定的方法)
我们在演示jdk压缩包的方式之前,我们要先把上面通过rpm包的方式安装的JDK包卸载掉,卸载步骤如下,当然实际生产中,根据实际需求来看是否需要卸载。
查询之前rpm包安装jdk包的名称:rpm -qa|grep jdk
然后卸载掉查到的jdk包名称:rpm -e --nodeps jdk1.8(这里的- -nodeps参数的作用就是强制删除某个包而不去管他的依赖关系,这里的jdk1.8也可以写jdk全称)
然后检查java环境是否卸载干净了,上面的几步如下图。
接下来我们来演示如何jdk压缩包的方式配置java环境,首先我们把压缩包解压到指定的目录下:tar -zxvf jdk-8u241-linux-x64.tar.gz -C /usr/local/src/ 这里的-C就是指定安装目录
接下来就是配置环境变量了,有的同学可能想rpm安装的方式可以直接通过软连接的方式切换版本,所以也想到了ln -sv /usr/local/src/jdk1.8.0_241/bin/* /usr/bin/ 来进行配置,然后通过java -version也验证成功了。但是需要注意这里其实是没有成功的,因为/usr/bin目录下是系统变量,你这种方式可能会有的服务需要的java库找不到,报一些奇怪的错。所以不建议用这样的方式,一般建议配置环境。配置方式如下。
使用vim /etc/profile 编辑profile文件 输入: vim /etc/profile
向文件里面追加以下内容。
JAVA_HOME=/usr/local/src/jdk1.8.0_241
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
参数注释:
JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径,此路径下包括lib,bin,jre等文件夹(tomcat,Eclipse的运行都需要依靠此变量)。如果后面想切换环境变量,只需改这里的路径就可以了。
CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别,设:.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib。CLASSPATH变量值中的.表示当前目录
PATH使得系统可以在任何路径下识别java命令,设为:$JAVA_HOME/bin:$JRE_HOME/bin。其在环境变量配置中的作用是预设可执行文件或命令的搜索路径
export在环境变量配置文件中的作用就是用于声明一个环境变量。
特别注意:环境变量值的结尾没有任何符号,不同值之间用:隔开(windows中用;)。
最后使配置文件生效:source /etc/profile ,并检查。
上面的命令如下图,在日常配置环境java环境变量的时候我们一般建议使用jdk压缩包的方式配置
[root@localhost devops]# tar -zxvf jdk-8u241-linux-x64.tar.gz -C /usr/local/src/ [root@localhost ~]# vim /etc/profile [root@localhost ~]# source /etc/profile [root@localhost ~]# java -version java version "1.8.0_241" Java(TM) SE Runtime Environment (build 1.8.0_241-b07) Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
3.windows下java环境的配置
1.下载二进制包
我们先按自己的需求去这个地址下https://www.oracle.com/java/technologies/javase-downloads.html去选择对应版本的jdk。我们这里选择了jdk8。
2. 安装过程
双击刚刚下载的可执行文件,默认安装即可,但要记住刚刚安装的路径,待会配置环境变量需要用到。
安装过程中会弹出更改”目录文件夹”窗口。注意:如果长时间安装程序没有反应,需要特别注意,可能是弹出窗口被挡,需要移动主窗口查看是否已经有窗口弹出。
修改JRE安装目录(注意,不能选择JDK的安装文件夹[jdk1.8.0_251],最好在JDK安装文件夹同级目录下新建)后,如下图单击”下一步”,开始安装JRE
出现下面的界面,表示安装成功
接下来就是配置环境变量了,右击"我的电脑"-"属性"-"高级系统设置"-"环境变量",如下图步骤进
3.配置环境变量
新建一个系统环境变量:
变量名:JAVA_HOME
变量值:刚刚JAVA的安装目录
在”系统变量”选项区域中查看”CLASSPATH”变量,如果不存在,则新建变量”CLASSPATH”,否则选中该变量,单击”编辑”按钮,在”变量值”文本框的起始位置添加”.;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar;”, 单击”确定”, 如下图所示
在”系统变量”选项区域中查看”PATH”变量,如果不存在,则新建变量”PATH”,否则选中该变量,单击”编辑”按钮,在”变量值”文本框的起始位置添加”%JAVA_HOME%in;%JAVA_HOME%jrein;” 单击”确定”, 如下图所示
4.验证
单击”确定”,关闭”环境变量”及”系统属性”,接下来验证,在DOS命令行窗口输入”JAVAC”,测试环境变量的配置成功与否。输出帮助信息即为配置正确,如下图所示