有一个需求要我编写一个Java程序,万年C++的我迫于无奈硬着头皮去了解和学习。遇到的第一个问题就是我需要在CentOS上安装Java开发环境。
一开始想是直接用yum命令安装Java开发环境,于是就在论坛上找了一些方法,二话不说直接在bash输入
yum install java-1.8.0-openjdk.x86_64
安装好之后试了一下
java -version
确实是安装好了,后面也修改了/etc/profile文件但是等我要编译java文件的时候就尴尬了,javac命令找不到,我找了很多方法都没有很好地解决这个问题。
最后我在这个网址找到了原因,使用yum安装的java环境是OpenJDK
OpenJDK和Oracle JDK的区别
一般生产线上使用的是Oracle的java,因为这样配置的java环境更全,功能会更多
1、授权协议的不同
OpenJDK采用GPL V2协议放出,而SUN JDK则采用JRL放出。两者协议虽然都是开放源代码的,但是在使用上的不同在于GPL V2允许在商业上使用,而JRL只允许个人研究使用。OpenJDK不包含Deployment(部署)功能:部署的功能包括:Browser Plugin、Java Web Start、以及Java控制面板,这些功能在OpenJDK中是找不到的。
2、OpenJDK源代码不完整
这个很容易想到,在采用GPL协议的OpenJDK中,SUN JDK的一部分源代码因为产权的问题无法开放给OpenJDK使用,其中最主要的部份就是JMX中的可选元件SNMP部份的代码。因此这些不能开放的源代码 将它作成plug,以供OpenJDK编译时使用,你也可以选择不要使用plug。而Icedtea则为这些不完整的部分开发了相同功能的源代码 (OpenJDK6),促使OpenJDK更加完整。
3、Open Jdk更为精简化
OpenJDK只包含最精简的JDK:OpenJDK不包含其他的软件包,比如Rhino Java DB JAXP……,并且可以分离的软件包也都是尽量的分离,但是这大多数都是自由软件,你可以自己下载加入。 这可能导致yum安装的java环境没有jar命令
4、版本显示
OpenJDK不能使用Java商标,这个很容易理解,在安装OpenJDK的机器上,输入“java -version”显示的是OpenJDK,但是如果是使用Oracle安装的java,显示的是Java™
于是我果断一个命令卸载了原来的JDK
yum remove java-1.8.0-openjdk.x86_64
从官网下载rpm包
cd /usr
sudo mkdir java & cd java
sudo wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm
之后简单一句命令搞定一切
sudo rpm -ivh jdk-17_linux-x64_bin.rpm
安装完成之后的环境直接能用,也不需要配置/erc/profile文件。
测试
- 创建javac helloworld.java
class Test{
public static void main(String []args){
System.out.println("test input main arguments");
System.out.println(args[0]+" "+args[1]);
System.out.println("end of main");
}
}
- 编译
javac helloworld.java
这时会生成Test.class文件
- 运行
java Test.class hello world!
输出结果为:
-bash-4.1# java Test hello world
test input main arguments
hello world
end of main