OpenJDK 还是 SunJDK?

由于刚开始接触Linux,所以在搜索如何安装jdk的问题上,有了不同的说法,其中有一种安装是直接安装OpenJDK,还有一种方法下载官方网站的SunJDK,那么两个区别是什么呢?下面是知乎的网友给出的见解。

作者:Aloys寒风

链接:https://www.zhihu.com/question/19646618/answer/40621705

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的OpenJDK,那么到底什么是OpenJDK,它与SUN JDK有什么关系和区别呢?

历史上的原因是,OpenJDK是JDK的开放原始码版本,以GPL(General Public License)协议的形式放出(题主提到的open就是指的开源)。在JDK7的时候,OpenJDK已经作为JDK7的主干开发,SUN JDK7是在OpenJDK7的基础上发布的,其大部分原始码都相同,只有少部分原始码被替换掉。使用JRL(JavaResearch License,Java研究授权协议)发布。至于OpenJDK6则更是有其复杂的一面,首先是OpenJDK6是JDK7的一个分支,并且尽量去除Java SE7的新特性,使其尽量的符合Java6的标准。关于JDK和OpenJDK的区别,可以归纳为以下几点:

授权协议的不同:OpenJDK采用GPL V2协议放出,而SUN JDK则采用JRL放出。两者协议虽然都是开放源代码的,但是在使用上的不同在于GPL V2允许在商业上使用,而JRL只允许个人研究使用。

OpenJDK不包含Deployment(部署)功能:部署的功能包括:Browser Plugin、Java Web Start、以及Java控制面板,这些功能在OpenJDK中是找不到的。

OpenJDK源代码不完整:这个很容易想到,在采用GPL协议的OpenJDK中,SUN JDK的一部分源代码因为产权的问题无法开放给OpenJDK使用,其中最主要的部份就是JMX中的可选元件SNMP部份的代码。因此这些不能开放的源代码 将它作成plug,以供OpenJDK编译时使用,你也可以选择不要使用plug。而Icedtea则为这些不完整的部分开发了相同功能的源代码 (OpenJDK6),促使OpenJDK更加完整。

部分源代码用开源代码替换:由于产权的问题,很多产权不是SUN的源代码被替换成一些功能相同的开源代码,比如说字体栅格化引擎,使用Free Type代替。OpenIDK只包含最精简的JDK:OpenJDK不包含其他的软件包,比如Rhino Java DB JAXP……,并且可以分离的软件包也都是尽量的分离,但是这大多数都是自由软件,你可以自己下载加入。

不能使用Java商标:这个很容易理解,在安装OpenJDK的机器上,输入“java-version”显示的是OpenJDK,但是如果是使用Icedtea补丁的OpenJDK,显示的是java。

总之,在Java体系中,还是有很多不自由的成分,源代码的开发不够彻底,希望Oracle能够让JCP更自由开放一些,这也是所有Java社区所希望的。

参考文章:

java - What is the difference between JVM, JDK, JRE & OpenJDK?http://blog.softrayn.com/2012...

如何选择

Oracle JDK 和openJDK 有99.9%的代码是一样的,所以对于普通开发者没有影响,为了日后少操些心,我还决定用官方的版本吧。

安装SUN / Oracle JDK

在官网下好版本。

2.创建一个目录作为JDK的安装目录.

`sudo mkdir /java`

移动文件到/java目录下

sudo mv /home/dreamer/下载/jdk-8u161-linux-x64.tar.gz /java

解压文件

解压文件之前,先cd到java文件夹下面。

sudo tar -zxvf /java/jdk-8u161-linux-x64.tar.gz

配置环境

sudo vim /etc/environment

配置请替换自己的文件夹。

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$JAVA_HOME/bin"

export CLASSPATH=“.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib”

export JAVA_HOME=”/java/jdk1.8.0_121“

输入

source /etc/environment是环境变量立即生效。

输入java -version显示成功则说明安装成功。

7.这个时候还没有结束,电脑重启之后就用不了了,所以还需要配置所有用户的环境变量

sudo vim /etc/profile

在文件的最后添加以下内容:

#set Java environment

export JAVA_HOME=/java/jdkXXX

export JRE_HOME=$JAVA_HOME/jre

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

8.同样,需要使用命令使环境变量立即生效

source /etc/profile

至此JDK就安装成功了!!

eclipse 下载。。。。(逃。。。。

下载太慢 ,所以我觉得还是下载idea吧。。。。

可能这个原因使得idea份额变大的原因吧(逃。。。。

好了,下面是idea的下载安装

同样的道理。

官方下载IDEA,其中有一个是without JDK,但是我还是下载了含有JDK的版本,因为我怕后面事情多,毕竟新手,所以也建议大家下载一个比较全的版本吧。

移动到安装目录

解压

4.运行,在安装目录运行的bin目录执行。

`./idea.sh`

ubuntu安装eclipse java环境变量配置_【Linux学习】Ubuntu下安装JDK以及配置环境,和eclipse的下载...相关推荐

  1. matlab安装好 启动总是闪退_在Ubuntu16.04下安装MATLAB2017b

    1. 前言 最近在折腾Ubuntu系统的高端机子,matlab这家伙的交互和可视化太方便了!于是想在Linux下安装matlab,在各个版本中,matlab2017的性价比是非常高的,因此选择安装介个 ...

  2. suse oracle 12c安装,用半行代码实现在LINUX(SUSE/RH)下安装ORACLE 12C

    最近新到单位的朋友总是抱怨在LINUX下安装ORACLE,实在是太麻烦了,而且这些步骤既不知是什么意思,也记不住:索性,我就分析了一下,经过实践,实现了只用半行代码(确切的说,只消4个字母)就可实现在 ...

  3. 安装mysql总是未响应状态_求助啊 WIN7下安装mysql出问题 老是说未响应~!!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 # # The following options will be read by the MySQL Server. Make sure that # ...

  4. apache php debug,fedora linux apache/php下安装配置xdebug

    核心内容: 在fedora13下从源码编译安装xdebug: 如果仅仅需要在linux/fedora13,14下安装xdebug,请参看本文,直接下载二进制文件并安装使用 fedora linux下p ...

  5. java 设置环境变量生效_配置java环境变量后没有生效的解决办法

    参考文章:https://blog.csdn.net/tooky_poom/article/details/60768458 系统安装了jdk1.7,环境变量正常,但是安装jdk1.8后,修改环境变量 ...

  6. 中修改环境变量_Golang入门(1):安装与配置环境变量的意义

    摘要 在几年前学习Java的时候,环境的配置就会劝退一部分的初学者.而对于Golang来说,也需要从环境的配置开始学起.这一篇文章将从如何安装Golang开始讲起,随后将会提到Golang中的环境变量 ...

  7. python需要配置环境变量吗_教你手动设置python环境变量

    在Windows系统上安装Python非常简单,从头到尾只要跟着步骤走,一路点击"NEXT"按钮即可.最重要也是最麻烦的是安装完毕后需要手动设置下环境变量,到了这一步,很多朋友都不 ...

  8. Linux操作系统下三种配置环境变量的方法(linux下几种profile执行顺序)

    http://www.linuxeden.com/html/sysadmin/20080424/56879.html 现在使用linux的朋友越来越多了,在linux下做开发首先就是需要配置环境变量, ...

  9. python开发环境功能介绍_第一模块 第3章 Python介绍与环境配置

    python入门(全为重点) 1. 编程语言介绍 编程语言分类.总结 2. python介绍 3. 解释器多版本共存 4. 运行python程序的两种方式 5. 一个python程序运行的三个步骤(* ...

  10. linux修改jdk文件保存,Linux下更换jdk和配置环境变量详解

    不需要删除旧的jdk,安装新版本的jdk,再更新环境变量即可. Linux下安装jdk,步骤如下 1:下载jdk包:本章使用的为后缀为tar.gz的文件(不需要安装),如jdk-8u111-linux ...

最新文章

  1. linux make 命令行 定义宏(-D)传递给C源代码 简介
  2. 从道的角度来论述大数据对企业价值
  3. C#架构设计-程序运行时从xml配置文件中加载配置项并设置为全局变量
  4. SVG技术入门:线条动画实现原理
  5. jq循环取数据 ,一直记不住,放到这
  6. HTML abbr元素
  7. 1. 方程求根(二分法)
  8. 【图像处理】MATLAB:几何变换与图像配准
  9. 网络编程之 socket编程
  10. 理解linux下的load
  11. 早期预警系统的组成要素
  12. 证券交易1-交易系统简介
  13. C++——fcntl
  14. 18年怎么将win7升级到win10教程
  15. 常用linux双机软件,双机热备软件_Windows与Linux双机热备软件有哪些
  16. C# 如何在PDF文档中根据关键字查找文本并给文本设置背景颜色
  17. nas服务器加密文件夹,NAS加密文件夹创建和使用教程
  18. CentOS7 网络安装版本 设置基础软件仓库出错
  19. php 全等 性能,在PHP中,相等(==)和全等(===)的含义是一样的。
  20. 湖北大学计算机学院王时绘,5G来了,有湖大人的智慧!

热门文章

  1. 通风与防排烟工程电子书_工厂防排烟系统与通风空调系统的兼用设计
  2. java web 数据库操作_Java Web----Java Web的数据库操作(三)
  3. linux更新驱动脚本,Linux 第一个驱动程序编写
  4. c语言射击类小游戏任务书,(c语言课程设计报告小游戏“石头剪子布”.doc
  5. Win7设置自环的方法(网卡终结器)
  6. Job 存储和持久化 (第五部分)
  7. 基于JAVA+SpringBoot+Mybatis+MYSQL的快递管理系统
  8. 基于JAVA+Spring+MYSQL的物流运输管理系统
  9. 基于JAVA+SpringMVC+MYSQL的旅行社管理系统
  10. vmware 虚拟机设置 redhat 桥接模式