精华内容
下载资源
问答
  • 背景OS: Ubuntu 14.04之前编译Android 5.1的时候,已经安装过OpenJDK,最近要编译Android 4.4,但是需要依赖的是Oracle JDK,因为编译服务器是多人共用,在编译android 4.4时,不能影响其他人的编译使用。...

    背景

    OS: Ubuntu 14.04

    之前编译Android 5.1的时候,已经安装过OpenJDK,最近要编译Android 4.4,但是需要依赖的是Oracle JDK,因为编译服务器是多人共用,在编译android 4.4时,不能影响其他人的编译使用。

    整体思路

    OpenJDK安装在默认路径/var/lib/jvm/下,将Oracle JDK安装到其他路径下,新建一个用户,设置改用户的.bashrc中的环境变量。

    具体实现

    1、新建用户

    sudo useradd coffee -m -s /bin/bash

    2、下载Oracle JDK安装包jdk-6u45-Linux-x64.bin,新建目录oraclejdk,将安装包放到该目录下

    chmod a+x jdk-6u45-Linux-x64.bin

    ./jdk-6u45-Linux-x64.bin

    此时oraclejdk下新增一个目录jdk1.6.0_45

    3、配置新用户的环境变量

    vim ~/.bashrc

    添加

    export JAVA_HOME=~/oraclejdk/jdk1.6.0_45

    export PATH=$JAVA_HOME/bin:$PATH

    export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

    此时可以分别用原有用户和新用户登录,执行

    java -version

    可以看到当前用户使用的JDK

    参考:

    如何在同一个Ubuntu服务器上安装两个不同的JDK版本

    Ubuntu新建用户

    Ubuntu安装JDK(jdk-6u45-Linux-x64.bin)

    展开全文
  • 启动图形界面,需要指定jre路径,当时使用yum install jdk安装的,并不能解决问题,查看版本才知道他是OpenJDK,最终使用Oracle JDK,才解决的问题,那OpenJDK和Oracle JDK究竟有什么区别OpenJDK Java最早由SUN...

    《Linux 7安装Oracle 11g打怪经历》的安装过程中,启动图形界面,需要指定jre路径,当时使用yum install jdk安装的,并不能解决问题,查看版本才知道他是OpenJDK,最终使用Oracle JDK,才解决的问题,那OpenJDK和Oracle JDK究竟有什么区别?

    OpenJDK

    Java最早由SUN公司(Sun Microsystems,发起于美国斯坦福大学,SUN是Stanford University Network的缩写)发明,2006年SUN公司将Java开源,此时的JDK即为OpenJDK

    OpenJDK是Java SE的开源实现,他由SUN和Java社区提供支持,2009年Oracle收购了Sun公司,自此Java的维护方之一的SUN也变成了Oracle

    大多数JDK都是在OpenJDK的基础上编写实现的,比如IBM J9,Azul Zulu,Azul Zing和Oracle JDK。几乎现有的所有JDK都派生自OpenJDK,他们之间不同的是许可证,OpenJDK根据许可证GPL v2发布,Oracle JDK根据Oracle二进制代码许可协议获得许可。

    Oracle JDK

    Oracle JDK之前被称为SUN JDK,显而易见,这是在2009年Oracle收购SUN公司之前,收购后被命名为Oracle JDK。

    实际上,Oracle JDK是基于OpenJDK源代码构建的,因此Oracle JDK和OpenJDK之间没有重大的技术差异

    某次大会上,曾用下图证实了OpenJDK 7和Oracle JDK 7在程序上是非常接近的,两者共用了大量相同的代码,图中提示了两者共同代码的占比要远高于图形上看到的比例,所以我们编译的OpenJDK基本上可以认为性能、功能和执行逻辑上都和官方的Oracle JDK是一致的,

    两者区别

    再粗暴些地说,OpenJDK是开源的,Oracle JDK是官方的,从网站就能看出一些端倪,OpenJDK界面如此粗糙(http://openjdk.java.net/),朋友们可能从中看出了SUN的影子,

    命令行中使用java -version,可以看到JDK的版本,如果是Oracle JDK,会显示,

    [root@localhost ~]# java -version
    java version "1.7.0_79"
    Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
    Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

    其中Java HotSpot(TM) 64-Bit Server VM表明,此JDK的JVM是Oracle的64位HotSpot虚拟机,运行在Server模式下。Java(TM) SE Runtime Environment (build 1.8.0_162-b12)是Java运行时环境(即JRE)的版本信息。

    如果是OpenJDK,会显示,

    [root@localhost ~]# java -version
    openjdk version "11-ea" 2018-09-25
    OpenJDK Runtime Environment (build 11-ea+28)
    OpenJDK 64-Bit Server VM (build 11-ea+28, mixed mode, sharing)

    主要的Linux发行版(例如这些常见的Ubuntu、Fedora和Red Hat Enterprise Linux)提供OpenJDK或其变体作为系统默认的Java SE的实现。解释了为什么在文章开始,提到使用yum install jdk安装成的是OpenJDK。

    另外几点不同

    授权协议的不同:OpenJDK采用GPL V2协议放出,而Oracle 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代替。

    OpenJDK只包含最精简的JDK:OpenJDK不包含其他的软件包,比如Rhino Java DB JAXP...,并且可以分离的软件包也都是尽量的分离,但是这大多数都是自由软件,你可以自己下载加入。

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

    StackOverflow上的这篇文章《What is the difference between JVM, JDK, JRE & OpenJDK?》,可以说各路大神回答了关于JVM、JDK、JRE和OpenJDK之间区别的问题,其中有个人的回答言简意赅,

    OpenJDK is an open source version of sun JDK. Oracle JDK is Sun's official JDK.

    另外,这篇文章《Update for JDK 11 - An article from Donald Smith try to disambiguate the difference between Oracle JDK and Oracle's OpenJDK》,介绍了更新版本Oracle JDK和OpenJDK的区别,有兴趣的朋友,可以拜读。其中非常有意思的是这篇文章的博主,是Insights and updates on Java SE and OpenJDK from the Java Platform Group Product Management Team,

    竟然有这种团队,说明Oracle JDK和OpenJDK并不是绝对的竞争对手,他们的存在还是有意义的,这就是所谓“存在即合理”。

    参考文章:

    https://blog.csdn.net/u014116780/article/details/92440115

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

    https://stackoverflow.com/questions/11547458/what-is-the-difference-between-jvm-jdk-jre-openjdk

    https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later

    展开全文
  • OpenJDK和OracleJDK多版本共存切换

    在编译一个比较老的版本的Android的时候,系统提示JDK版本不正确,如下图所示。系统安装的是OpenJDK,而编译需要的是Sun/Oracle JDK,网上有很多建议卸载了OpenJDK然后重新安装Sun/Oracle JDK,这样会导致在编译新版的Android时又得重新安装,反复卸载安装,比较浪费时间。其实在Ubuntu上,是可以多个版本JDK共存的,无论是OpenJDK多版本,Sun/Oracle JDK多版本还是OpenJDK和Sun/Oracle JDK混合的多版本是都是可以的在这里插入图片描述
    首先下载Sun/Oracle JDK,可以从官网下载https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html,由于官网需要登录,大家可以从百度网盘进行下载,链接: https://pan.baidu.com/s/1pYoUo73prWe3GFBTbfcKew 提取码: pqic
    然后我们找到系统之前已经安装的OpenJDK的位置,将Sun/Oracle JDK也安装在同一位置,便于后期维护。(已经下载并拷贝解压到该路径下,大家可以根据自己的实际情况进行处理)在这里插入图片描述
    解压完成后我们可以先看看本地的java版本信息,输入java -version
    在这里插入图片描述
    在Linux系统中,update-alternatives命令用于软件版本的切换,先输入update-alternatives --help查看用法,如下图所示
    在这里插入图片描述
    可见我们选择第一个,--install命令即可实现多版本的共存,输入which java,可以查看系统java命令的链接路径,如下图所示,即/usr/bin/java,命令的名称是java,路径就是我们刚解压的java命令的路径,即/usr/lib/jvm/jdk1.8.0_211/bin/java (大家根据自己的实际路径进行配置),优先级可以随便设置
    在这里插入图片描述
    根据上述对update-alternatives命令的用法分析,我们可以将Sun/Oracle JDK 1.8加入本系统的JDK的可选项中

    sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_211/bin/java 100
    

    输入上面第一条命令即可,然后根据update-alternatives的--config命令的用法,我们在需要切换java版本时,需要在其后面跟命令的名称,在这里就是java,因此update-alternatives --config java就可以列出系统全部配置好的java版本选项,执行如下命令

    sudo update-alternatives --config java
    

    执行结果如下图所示,我们现在想从OpenJDK切换为Sun/Oracle JDK 1.8,输入选择2即可(根据实际选项进行选择),然后再输入java--version命令,可见系统java已经切换为Sun/Oracle JDK 1.8版本
    在这里插入图片描述
    后记:
    对于安装Sun/Oracle JDK 1.8,网上还有另外两种方式,第一种是sudo apt-get install oracle-java8-installer,该方式需要添加ppa源,且仅支持到Ubuntu16.04,对于后续版本不在支持,经过实际测试,在Ubuntu20.04上是无法安装的,提示找不到源了;第二种方式就是解压源码后修改/etc/profile等文件,进行环境配置的方式,该方式在切换版本时很不便捷,且很多人修改的补全,导致开启新的命令行窗口或者重启电脑后java命令失效。因此建议实际开发的话还是采用本文的操作方式。
    对于javac命令也可以安装上述流程配置多个版本。

    展开全文
  • 学习java前我们先了解下这几个词的区别,HotSpot、JDK、JRE、OpenJDKOracle JDK 一、HotSpot HotSpot是JVM(Java Virtual Machine),是一个运行Java字节码的虚拟机,具有语言无关性平台无关性。平台无关性:...

    学习java前我们先了解下这几个词的区别,HotSpot、JDK、JRE、OpenJDK、Oracle JDK

    一、HotSpot

    HotSpot是JVM(Java Virtual Machine),是一个运行Java字节码的虚拟机,具有语言无关性和平台无关性。平台无关性:我们java编写的程序可以运行在window、mac、Linux上就是HotSpot的平台无关性。 语言无关性:比如Java、kotlin、Scala、Clojure、Groovy、Jython、JRuby、Ceylon、Eta、Haxe、net等语言可以运行JVM上。 目前JVM的平台无关性让java长期成为编程语言的TOP1,后续语言无关性是否也能让java更上一层楼也说不准。

    HotSpot包括:Java ClassLoader、Java字节码解释器、Client和Server模式的虚拟机针对不同用途做优化、垃圾回收器、一组运行时库。为什么叫HotSpot?因为这款虚拟机当时就是为了性能而打造,会分析程序执行的热点(hotspots),将这些热点即时编译以优化性能,固取名HotSpot。

    HotSpot现状: 

     实现语言:C++ 

     代码规模:2007年Sun估算了下HotSpot大约有250,000行代码。

     许可证:2006年11月13日,HotSpot JVM和JDK开始使用GPLV2许可证,随后加入到了Java 7中。

    二、JDK

    JDK(Java Development Kit),Java开发工具集,是Java SE、Java EE、Java ME的一种实现(为毛Java要搞这么多平台),以二进制应用形式发布,包含一个JVM和「其他开发Java应用程序所需的东西」,jdb包含组件如下。

    appletviewer – this tool can be used to run and debug Java applets without a web browser

    apt – the annotation-processing tool[4]

    extcheck – a utility that detects JAR file conflicts

    idlj – the IDL-to-Java compiler. This utility generates Java bindings from a given Java IDL file.

    jabswitch – the Java Access Bridge. Exposes assistive technologies on Microsoft Windows systems.

    java – the loader for Java applications. This tool is an interpreter and can interpret the class files generated by the javac compiler. Now a single launcher is used for both development and deployment. The old deployment launcher, jre, no longer comes with Sun JDK, and instead it has been replaced by this new java loader.

    javac – the Java compiler, which converts source code into Java bytecode

    javadoc – the documentation generator, which automatically generates documentation from source code comments

    jar – the archiver, which packages related class libraries into a single JAR file. This tool also helps manage JAR files.

    javafxpackager – tool to package and sign JavaFX applications

    jarsigner – the jar signing and verification tool

    javah – the C header and stub generator, used to write native methods

    javap – the class file disassembler

    javaws – the Java Web Start launcher for JNLP applications

    JConsole – Java Monitoring and Management Console

    jdb – the debugger

    jhat – Java Heap Analysis Tool (experimental)

    jinfo – This utility gets configuration information from a running Java process or crash dump. (experimental)

    jmap Oracle jmap - Memory Map– This utility outputs the memory map for Java and can print shared object memory maps or heap memory details of a given process or core dump. (experimental)

    jmc – Java Mission Control

    jps – Java Virtual Machine Process Status Tool lists the instrumented HotSpot Java Virtual Machines (JVMs) on the target system. (experimental)

    jrunscript – Java command-line script shell.

    jstack – utility that prints Java stack traces of Java threads (experimental)

    jstat – Java Virtual Machine statistics monitoring tool (experimental)

    jstatd – jstat daemon (experimental)

    keytool – tool for manipulating the keystore

    pack200 – JAR compression tool

    policytool – the policy creation and management tool, which can determine policy for a Java runtime, specifying which permissions are available for code from various sources.

    VisualVM – visual tool integrating several command-line JDK tools and lightweight[clarification needed] performance and memory profiling capabilities

    wsimport – generates portable JAX-WS artifacts for invoking a web service.

    xjc – Part of the Java API for XML Binding (JAXB) API. It accepts an XML schema and generates Java classes.

    为什么Java搞这么多平台呢?估计是不同场景下的开发所需的API大不相同,全整合到一起又嫌大,所以分不同场景搞了多个平台吧。

    三、OpenJDK

    Open Java Development Kit是Java SE的开源免费实现。Sun公司在JavaOne 2006会议上宣布将开源Java,随后在2006年11月13日Sun以GPL许可发布了HotSpot以及编译器,并承诺JDK剩余的部分将会在2007年5月以GPL发布,"除开一些Sun无权以GPL许可发布源码的组件之外"。2007年5月8日,Sun以GPL许可发布了Java类库的源码,除开一些第三方授权给Sun的受限的部分,如Java图形用户接口等。Sun决定接下来要替换掉这些受到专利保护的部分,从而使Java类库完全免费。2007年5月,OpenJDK类库有4%的部分有专利保护。2008年5月发布的OpenJDK 6,只剩下不到1%的部分(SNMP的实现,非Java规范的部分)。到2009年4月OpenJDK 7发布时,所有专利保护部分终于全部去除。

    四、OracleJDK

    Oracle JDK采用了商业实现,而OpenJDK使用的是开源的FreeType。当然,“相同”是建立在两者共有的组件基础上的,Oracle JDK中还会存在一些Open JDK没有的、商用闭源的功能,例如从JRockit移植改造而来的Java Flight Recorder。预计以后JRockit的MissionControl移植到HotSpot之后,也会以Oracle JDK专有、闭源的形式提供。Oracle的项目发布经理Joe Darcy在OSCON 2011上对两者关系的介绍也证实了OpenJDK 7和Oracle JDK 7在程序上是非常接近的,两者共用了大量相同的代码(如下图,注意图中提示了两者共同代码的占比要远高于图形上看到的比例),所以我们编译的OpenJDK,基本上可以认为性能、功能和执行逻辑上都和官方的Oracle JDK是一致的。OpenJDK是OracleJDK的子集合,他们授权的方式不同。

     

    五、JRE

    Java运行时环境,顾名思义就是指运行java程序所需要的环境,那么运行Java程序的最小集合就是JRE了,显然包含一个JVM,再加上一些Java类库就可以了,其他东西都不需要。在这个基础上再加上一些编译调试工具啥的(比如javac, jstack工具)就是上面说的JDK了。所以如果你只是要运行Java程序,有JRE就可以了,但如果要开发Java程序,就得有JDK

     

    展开全文
  • 我知道 openJDK 由开源社区维护,Oracle JDK 显然由 Oracle 公司开发维护。 但是,比如新出的 JDK 11,怎么 openJDK 也有 11 的版本,这些新功能到底是谁开发的 ?? 我最近在研究 javac 编译器的源码,文章...
  • OpenJDK能替代Oracle JDK

    千次阅读 2021-01-02 18:26:33
    关于 JVM,JDK,JRE OpenJDK 之间的区别Oracle 博客帖子在 2012 年有一个更详细的答案: 问:OpenJDK 存储库中的源代码与用于构建 Oracle JDK 的代码之间有什么区别? 答:非常接近 - 我们的 Oracle JD
  • 嵌入式程序员区别?_常见问题解析嵌入式是指应用... OpenJDK OracleJDK区别?1、授权协议的不同:OpenJDK采用GPL V2协议放出,而SUN JDK则采用JRL放出。两者协议虽然都是开放源代码的,但是在使用上的不同在...
  • Oracle JDKOpenJDK里的JVM都是HotSpot VM。从源码层面说,两者基本上是同一个东西。从JDK7开始,Oracle JDK里的HotSpot VM,在研发的时候其实就是用放在http://openjdk.java.net上OpenJDK的Mercurial代码库。也...
  • openJdk OracleJdk有什么区别? 2006年在12月jdk6发布。在同年11月13日的javaone 大会上 ,sun公司宣布会将java代码在 GPL v2 协议下开源。建立了OpenJdk组织对这些源码进行独立管理,开源的openjdk使用免费。 ...
  • Oracle和OpenJDK JVM是相同的,具有相同的GC功能(从最新版本10+开始)。 在Oracle管理OpenJDK JVM之前,存在一些具体的差异,使得旧的Openjdk JVM在许多环境中几乎无法使用。 JVM现在是一样的。包含JVM作为Kit的一...
  • 首先要先明确OpenJDK和Sun/OracleJDK之间,以及OpenJDK6、OpenJDK 7、OpenJDK 7u和OpenJDK 8等项目之间是什么关系,这有助于确定接下来编译要使用的JDK版本源码分支。从前面介绍的Java发展史中我们了解到OpenJDK是...
  • 尽管我们已经声明了使OpenJDK和Oracle JDK二进制文件彼此尽可能接近的目标,但至少对于JDK 11而言,这两个选项之间仍然存在一些差异。当前的区别是:只有Oracle JDK提供Solaris,只有OpenJDK提供Alpine Linux。甲骨...
  • 写在前面简单记录学习,两者的区别,没有太多技术含量,倒是花了不少心思总结,欢迎关注,点赞哈这里先贴图历史版本新增特性 这里引用参考下,这篇大佬文章,链接在此,OracleOpenJDK之间的区别他是从组织、开源、...
  • Oracle JDK和OpenJDK之间有什么区别?下面本篇文章就来给大家介绍一下Oracle JDK和OpenJDK之间的区别是什么,希望对大家有所帮助。【视频教程推荐:Java教程】Oracle JDK和OpenJDK的简单介绍Oracle JDK是基于Java...
  • openjdk-6-jdk - oracle-java7-installer Debian / Ubuntu Debian Ubuntu 的有效软件包是: openjdk-6-jre openjdk-6-jre-headless openjdk-6-jdk openjdk-7-jre openjdk-7-jre-headless openjdk-7-jdk oracle-...
  • Linux卸载自带openJdk并安装oracleJDK1.8
  • 可能在看这个问题之前很多人我一样并没有接触使用过OpenJDK。下面通过我通过我收集到一些资料对你解答这个被很多人忽视的问题...OpenJDK Oracle JDK 的代码几乎相同,但 Oracle JDK 有更多的类一些错误修复..
  •     openJDK和OracleJDK在不同的场合有不同的用处,有的时候在同一台机器上安装也是必不可少的。     之前我编译Android源码使用的是openJDK8,当然还需要使用jdk写写java,这也是这篇文章的由来。 一、安装...
  • 麒麟V10更换OpenJDKOracle JDK

    千次阅读 2021-03-02 08:52:36
    1 简介 JDK(Java Development Kit)是 Java 平台编程...OracleJDK 根据 Oracle 二进制代码许可协议获得许可,而 OpenJDK 具有 GNU 通用公共许可证(GNU GPL)版本2。 使用 Oracle 平台时会产生一些许可影响。如 Orac
  • ​不知道各位developer平时是否有过疑问,Oracle JDK是什么,OpenJDK又是什么?Oracle JDK便是平常我们在windows系统上做开发使用的JDK,又称作SUN JDKOpenJDK则是大多数linux系统版本自带的JDK,那它们有什么不同...
  • 尽管我们已经声明了使OpenJDK和Oracle JDK二进制文件尽可能地接近的目标,但是这两个选项之间仍然存在一些差异。 当前的区别是: 甲骨文JDK提供“安装程序”( ,,等),这不仅将系统中的JDK二进制文件也包含更新...
  • Oracle JDK OpenJDK 的对比
  • OracleOpenJDK之间的区别

    万次阅读 2019-04-01 08:09:55
    在本文中,我们将探讨Oracle Java Development Kit和OpenJDK之间的差异并进行比较。 Oracle JDK Oracle JDKOracle公司开发,该公司是Sun许可证,基于Java标准版规范实现。它以二进制产品的形式发布。它支持多种...
  • Oracle JDK OpenJDK

    2021-03-06 10:19:21
    Oracle JDK OpenJDK OpenJDK Java由SUN公司(Sun Microsystems, 发起于美国斯坦福大学, SUN是Stanford University Network的缩写)发明, 2006年SUN公司将Java开源, 此时的JDK即为OpenJDK. 也就是说, OpenJDK是Java ...
  • Oracle JDKOpenJDK区别,应该下载那个? JAVA语言的发展史 java 语言版本: jdk(oracle) vs openJdk 2009年被oracle收购之前,将jak源代码开源,形成了OpenJdk 但是,在sun公司在开源jdk源代码的时候,其中有一...
  • openjdk8和jdk8的区别

    2021-08-06 10:06:09
    JDK被Oracle收购之前叫OpenJDK,收购之后叫OracleJDK,简称JDK。 OpenJDK8JDK8在程序上是非常接近的,两者共用了大量相同的代码,所以我们编译的OpenJDK基本上可以认为性能、功能执行逻辑上都官方的JDK是一致...
  • 1、先下好JDK版本,并进行安装,并对JDK进行配置rpm -ivh jdk-8u131-linux-x64.rpm2、查看相关配置信息[root@localhost ~]# update-alternatives --display java|grep priority/usr/lib/jvm/java-1.7.0-openjdk-1.7....
  • OpenJDK和SunJDK区别

    2021-03-16 15:04:59
    使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的OpenJDK,那么到底什么是OpenJDK,它与SUN JDK有什么关系和区别呢?OpenJDKJDK的开放原始码版本,以GPL(General ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,408
精华内容 9,763
关键字:

openjdk和oraclejdk的区别