Help us understand the problem. What is going on with this article?

参考メモ/CentOS7 の OpenJDK パッケージの構成メモ

More than 1 year has passed since last update.

お仕事ではOracleがリリースしてるJava SEを使うんですが、Red HatやCentOSで提供されてるOpenJDKのパッケージ構成ってどうなってるんだろう?と思って、CentOS7でちょっと見てみたので、簡単にメモしておきます。

CentOS7 で使えるOpenJDKパッケージ一覧

環境:64bit CentOS7
$ cat /etc/centos-release
CentOS Linux release 7.2.1511 (Core)
※epelリポジトリ導入済み

yum search java から適当にsortして抜き出した一覧:

java-1.6.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.6.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.6.0-openjdk-javadoc.x86_64 : OpenJDK API Documentation
java-1.6.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.6.0-openjdk.x86_64 : OpenJDK Runtime Environment

java-1.7.0-openjdk-accessibility.x86_64 : OpenJDK accessibility connector
java-1.7.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.7.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.7.0-openjdk-headless.x86_64 : The OpenJDK runtime environment without
java-1.7.0-openjdk-javadoc.noarch : OpenJDK API Documentation
java-1.7.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.7.0-openjdk.x86_64 : OpenJDK Runtime Environment

java-1.8.0-openjdk-accessibility-debug.x86_64 : OpenJDK accessibility connector
java-1.8.0-openjdk-accessibility.x86_64 : OpenJDK accessibility connector
java-1.8.0-openjdk-demo-debug.x86_64 : OpenJDK Demos with full debug on
java-1.8.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.8.0-openjdk-devel-debug.x86_64 : OpenJDK Development Environment with
java-1.8.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.8.0-openjdk-headless-debug.x86_64 : OpenJDK Runtime Environment with full
java-1.8.0-openjdk-headless.x86_64 : OpenJDK Runtime Environment
java-1.8.0-openjdk-javadoc-debug.noarch : OpenJDK API Documentation for packages
java-1.8.0-openjdk-javadoc.noarch : OpenJDK API Documentation
java-1.8.0-openjdk-src-debug.x86_64 : OpenJDK Source Bundle for packages with
java-1.8.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.8.0-openjdk-debug.x86_64 : OpenJDK Runtime Environment with full debug on
java-1.8.0-openjdk.x86_64 : OpenJDK Runtime Environment

感想:

  • OpenJDK 6, 7, 8 とパッケージが用意されてて、用途によって分かれてる。
  • OpenJDK 8 になると、-debug あり・なしでさらに分かれてる。

インストールと、各パッケージの簡単な調査メモ

$ sudo yum install \
  java-1.8.0-openjdk \
  java-1.8.0-openjdk-javadoc \
  java-1.8.0-openjdk-src \
  java-1.8.0-openjdk-headless \
  java-1.8.0-openjdk-devel \
  java-1.8.0-openjdk-demo \
  java-1.8.0-openjdk-accessibility

...
Installing:
 java-1.8.0-openjdk                 x86_64
 java-1.8.0-openjdk-accessibility   x86_64
 java-1.8.0-openjdk-demo            x86_64
 java-1.8.0-openjdk-devel           x86_64
 java-1.8.0-openjdk-headless        x86_64
 java-1.8.0-openjdk-javadoc         noarch
 java-1.8.0-openjdk-src             x86_64
Installing for dependencies:
 giflib                             x86_64
 java-atk-wrapper                   x86_64
 javapackages-tools                 noarch
 lksctp-tools                       x86_64
 python-javapackages                noarch
 python-lxml                        x86_64
 ttmkfdir                           x86_64
 tzdata-java                        noarch
 xorg-x11-font-utils                x86_64
 xorg-x11-fonts-Type1               noarch

以下、各パッケージについて rpm -qilR --scripts パッケージ名 した結果から内容について簡単にメモ。

java-1.8.0-openjdk

  • OpenJDKの実行環境を入れるためのパッケージだが、このパッケージ自身は policytool とAWTやサウンド系のsoファイル、あとはデスクトップ環境用の設定・アイコンファイルしか入っていない。
  • 依存関係で java-1.8.0-openjdk-headless を必要としており、後述の通りこちらがJava VM本体。

ファイルリスト:

/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.71-2.b15.el7_2.x86_64/jre/bin/policytool
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.71-2.b15.el7_2.x86_64/jre/lib/amd64/libawt_xawt.so
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.71-2.b15.el7_2.x86_64/jre/lib/amd64/libjawt.so
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.71-2.b15.el7_2.x86_64/jre/lib/amd64/libjsoundalsa.so
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.71-2.b15.el7_2.x86_64/jre/lib/amd64/libsplashscreen.so
/usr/share/applications/java-1.8.0-openjdk-1.8.0.71-2.b15.el7_2.x86_64-policytool.desktop
/usr/share/icons/hicolor/16x16/apps/java-1.8.0.png
/usr/share/icons/hicolor/24x24/apps/java-1.8.0.png
/usr/share/icons/hicolor/32x32/apps/java-1.8.0.png
/usr/share/icons/hicolor/48x48/apps/java-1.8.0.png

java-1.8.0-openjdk-headless

  • $JAVA_HOME/jre/(bin|lib)/ 以下のファイルを提供する、Java実行環境の本体パッケージ。
  • rpm -q --scripts で見てみると、alternativesコマンドなど、結構複雑なことしてる。
  • jpackage-utilstzdata-java パッケージに依存してる。

主なファイルリスト:

  • /usr/lib/jvm-exports/ 以下のディレクトリとjarファイル
  • /usr/lib/jvm-private/ 以下のディレクトリとjarファイル
  • /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.71-2.b15.el7_2.x86_64/jre/bin 以下の実行ファイル
  • /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.71-2.b15.el7_2.x86_64/jre/lib 以下のライブラリや設定ファイル
  • manページ

java-1.8.0-openjdk-devel

  • javacなどJavaで開発するためのコマンドやライブラリ・ヘッダーファイル。

主なファイルリスト:

  • /usr/lib/jvm-exports/ 以下のディレクトリとjarファイル
  • /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.71-2.b15.el7_2.x86_64/(bin|include|lib) 以下の実行ファイル・ライブラリ・ヘッダーファイル
  • manページ
  • stap用ファイル

java-1.8.0-openjdk-javadoc

ファイルリスト:

/usr/share/doc/java-1.8.0-openjdk-javadoc-1.8.0.71
/usr/share/doc/java-1.8.0-openjdk-javadoc-1.8.0.71/LICENSE
/usr/share/javadoc/java-1.8.0-openjdk-1.8.0.71-2.b15.el7_2
...

java-1.8.0-openjdk-accessibility

  • JavaのAWTアプリケーションでアクセシビリティサポートを追加する。AWTアプリでアクセシビリティ気にしなければ入れなくて良い。
  • 依存関係で java-atk-wrapper を必要としている。

ファイルリスト:

/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.71-2.b15.el7_2.x86_64/jre/lib/accessibility.properties
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.71-2.b15.el7_2.x86_64/jre/lib/amd64/libatk-wrapper.so
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.71-2.b15.el7_2.x86_64/jre/lib/ext/java-atk-wrapper.jar

java-1.8.0-openjdk-demo

  • Javaのデモ・サンプルコードなど。

ファイルリストは省略

java-1.8.0-openjdk-src

  • Java クラスライブラリのソースコード。

ファイルリスト:

/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.71-2.b15.el7_2.x86_64/src.zip
/usr/share/doc/java-1.8.0-openjdk-src-1.8.0.71
/usr/share/doc/java-1.8.0-openjdk-src-1.8.0.71/README.src

その他の依存パッケージについて

java-1.8.0-openjdk-xxx パッケージをインストールすると、依存関係で一緒に入ってくるパッケージの中でも、特にJavaに強く関連するものについて簡単にメモ。

  • javapackages-tools
    • Javaのパッケージングに使うスクリプトやマクロを提供
  • python-javapackages
    • Javaのパッケージングで使うPythonライブラリ
  • tzdata-java
    • Javaランタイム用のタイムゾーン情報ファイル。
    • /usr/share/javazi/ ディレクトリ以下にタイムゾーン情報がファイルで保存される。

まとめ : ざっくりとしたディレクトリ・ファイル構成

  • Java本体系:
    • /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.71-2.b15.el7_2.x86_64
      • JAVA_HOME 相当, JDK/JREの実行ファイル・ライブラリなど。
    • /usr/lib/jvm-(common|exports|private)/
      • 関連ライブラリのjar
  • alternatives 関係
    • 異なるメジャーバージョンを同時に入れた場合、alternatives コマンドで /usr/bin 以下のコマンドなどをシンボリックリンクで切り替え、デフォルトで使用するバージョンを設定できるように構成されてます。
    • /etc/alternatives/
      • java, jar, javac, jstat など主要コマンドや jre, java_sdk など主要ディレクトリがシンボリックリンクで管理されてる。
  • javapackages-toolsパッケージ系
    • なぜか /etc/java というそれっぽいディレクトリ作って、 java.conf など置いている。

おまけ : Red Hat によるOpenJDK / OracleによるJava SEのサポートライフサイクル

そもそものOpenJDK/Oracle Java SEの違いについて、2015年の新し目のわかりやすい解説資料:

Red Hat によるOpenJDKのサポートライフサイクル:

Oracle によるJava SEのサポートライフサイクル

ちなみに、Red Hat でもOracle Java SEをパッケージングしたリポジトリを用意してるらしく、多分RHNなど有償サブスクリプション系に入れば、使えるのかな?


  1. 2018-10-03 : 指摘により再確認して最新の情報に更新 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした