• macOS 所有版本 JDK 安装指南 (with Homebrew)


    updated on 2020/3/11

    关于 Homebrew

    鉴于 Homebrew 的易用性, 本文提供的均为 Homebrew 安装 JDK 的方法.

    已了解 Homebrew 可以跳过这节直接看正文, 如果不了解的可能要先了解一下, 在电脑上安装 Homebrew 之后再进行后续的 JDK 的安装.

    Homebrew 是 macOS 下的一个非常好用的包管理工具, 可以用于类似于 MySQL 的服务程序的管理, Homebrew Caskroom 则可用于应用程序 (GUI 软件) 的安装与管理.

    懒人版

    # 最新版 Oracle JDK
    brew cask install oracle-jdk
    
    # Oracle JDK11、Oracle JDK8 需要手动下载
    # https://www.oracle.com/hk/java/technologies/javase-downloads.html
    
    # 最新版 Oracle OpenJDK
    brew cask install java
    
    # Oracle OpenJDK11
    brew cask install java11
    
    # 使用该命令则安装由 Oracle 提供的最新版的 OpenJDK
    brew cask install java
    
    # 使用该命令则安装由 Oracle 提供的 OpenJDK11
    brew cask install java11
    
    # OpenJDK 在 Oracle 不再维护后会转交给 RedHat 维护
    brew cask install openjdk@11
    
    # AdoptOpenJDK 
    brew cask install AdoptOpenJDK/openjdk/adoptopenjdk8
    brew cask install AdoptOpenJDK/openjdk/adoptopenjdk9
    brew cask install AdoptOpenJDK/openjdk/adoptopenjdk10
    brew cask install AdoptOpenJDK/openjdk/adoptopenjdk11
    brew cask install AdoptOpenJDK/openjdk/adoptopenjdk12
    brew cask install AdoptOpenJDK/openjdk/adoptopenjdk
    
    # Azul Zulu 提供了 JDK 7
    # Azul Zulu 也提供其他版本的 JDK 像 zulu8、zulu11 等
    brew cask install homebrew/cask-versions/zulu7
    brew cask install homebrew/cask-versions/zulu8
    brew cask install homebrew/cask-versions/zulu11
    brew cask install homebrew/cask-versions/zulu
    
    # Apple 提供的 JDK6
    brew cask install homebrew/cask-versions/java6
    

    JDK 的版本选用

    2019 年之后, Oracle 对 Java 的商业模式进行了一系列改革, 多种版本的 JDK 开始出现在开发者的视野中.

    整体来看, 存在三个版本的 JDK, 分别是 Oracle JDK、Oracle 编译的 OpenJDK 和第三方厂商编译的 OpenJDK. 其实三者在功能上并没有明显的差异, 主要在一些版权相关的 API 上有一些差别(如 OpenJDK 就无法使用 Oracle 版本中所使用的字体渲染 API).

    Oracle JDK

    关于 Oracle JDK 有一个基本的概念: Oracle 规定在一个 Oracle JDK 的生命周期内 (指的是下一个版本的 JDK 推出之前) 可以免费商用, 而生命周期之外继续在生产环境中使用, 想要继续商用 Oracle 对该版本的后续更新就需要付费.

    但并不是说下载这些版本 JDK 的后续更新就需要付费, 开发者可以从 Java SE - Downloads | Oracle Technology Network 免费下载并使用, 但是在生产环境中使用它们就需要付费了. 另外可以看到这个页面里只有最新版、JDK11 和 JDK8 的下载, 这是为了维护方便, Oracle 仅提供 LTS(长期支持) 版本的维护. 据称 JDK11 的维护将持续到 2024 年.

    所以说如果想要使用Oracle JDK 又不想付费, 只要一直使用最新版本的JDK就可以了.

    # 运行以下命令会安装最新版本的 Oracle JDK
    ## 2019-5, 该命令会安装 Oracle JDK 12
    ## 2020-3, 该命令则会安装 Oracle JDK 13
    brew cask install oracle-jdk
    

    另外两个 LTS 版本的 Oracle JDK 无法通过 Homebrew 安装, 需要手动从 Java SE - Downloads | Oracle Technology Network 获取.

    Oracle OpenJDK

    Oracle 还提供其编译的 OpenJDK, 事实上这个 OpenJDK 与其他 OpenJDK 几乎没有区别.

    # 使用该命令则安装由 Oracle 提供的最新版的 OpenJDK
    ## 2020-3, 这个命令会安装 OpenJDK13
    brew cask install java
    
    # 使用该命令则安装由 Oracle 提供的 OpenJDK11
    brew cask install java11
    
    # OpenJDK 在 Oracle 不再维护后会转交给 RedHat 维护
    brew cask install openjdk@11
    

    AdoptOpenJDK

    可以看到 Oracle 提供的 JDK 版本非常有限, 想要使用更多版本的 JDK, 就必须要寻求开源世界的帮助, 一个不错的选择就是 AdoptOpenJDK.

    AdoptOpenJDK 是完全免费的、无品牌的 OpenJDK 版本,基于 GPL 开源协议(+Classpath Extension), 以免费软件的形式提供社区版的 OpenJDK 二进制包, 公司也可安全且放心使用.

    与 Oracle 提供的 OpenJDK 不同,AdoptOpenJDK 会持续为 OpenJDK 提供类似于 Oracle JDK 的维护, 而且通过 AdoptOpenJDK 可以安装最多版本的 JDK.

    brew cask install AdoptOpenJDK/openjdk/adoptopenjdk8
    brew cask install AdoptOpenJDK/openjdk/adoptopenjdk9
    brew cask install AdoptOpenJDK/openjdk/adoptopenjdk10
    brew cask install AdoptOpenJDK/openjdk/adoptopenjdk11
    brew cask install AdoptOpenJDK/openjdk/adoptopenjdk12
    
    # 安装最新版本 OpenJDK
    brew cask install AdoptOpenJDK/openjdk/adoptopenjdk
    

    JDK7 与 Zulu

    JDK7 甚至 AdoptOpenJDK 都不提供了, 这时就要求助于一些商业公司, Azul Zulu 提供了自编译的 zulu, 在提供付费支持的商业版本外, Azul 也为 zulu 提供免费的社区技术支持.

    # 通过安装 zulu7 我们可以安装 OpenJDK7. 
    brew cask install homebrew/cask-versions/zulu7
    
    # Azul Zulu 也提供其他版本的 JDK 像 zulu8、zulu11 等
    brew cask install homebrew/cask-versions/zulu8
    brew cask install homebrew/cask-versions/zulu11
    brew cask install homebrew/cask-versions/zulu
    

    JDK6

    年久的 JDK6 主要由 Apple 提供, 按照以下命令即可安装

    brew cask install homebrew/cask-versions/java6
    
  • 相关阅读:
    Android--Activity中使用Intent传值
    Android--使用剪切板在Activity中传值
    Android--通过Application传递数据
    HTTP 头缓存Last-Modified,ETag,Expires
    HTTP请求头 If-Modified-Since
    HTML5 本地存储形式
    spring作用域(Spring Bean Scopes Example)
    java.sql.SQLException: Data truncation: Truncated incorrect DOUBLE value
    对hadoop 执行mapreduce时发生异常Illegal partition for的解决过程
    InnerHTML属性的XSS利用
  • 原文地址:https://www.cnblogs.com/imzhizi/p/macos-jdk-installation-homebrew.html
Copyright © 2020-2023  润新知