Java プラットフォーム

Javaで記述されたプログラムの開発および実行を行うことのできるソフトウェア群の総称.

📝Java実行環境(JRE)

Java Runtime Environment, JRE.

コンピュータでJavaプラットフォームを動かせるようにするためのツールセット.

📝Java SE📝Java仮想マシン(JVM)とセットで提供される.


👉JVM

📝Java仮想マシン(JVM)

📝Java SE

Java Platform, Standard Edition.

Javaで使用できるStandardなAPIをまとめたもの.

📝Java開発環境(JDK)

Java Development Kit, JDK.

Java言語を使ってJavaアプリケーションを開発するためのツールセット, 開発環境.

JDKをインストールするとJREもついてくるところが紛らわしさを生み出している.


📝JAR

Java ARchiveの略. Java Classファイルとメタデータをアーカイブしたもの.


📝UberJAR

生産物のJarだけでなく依存関係のjarも含むjarの塊.

Javaをつかってスタンドアロンアプリケーションとして起動することができる.

java -jar exampleapp.jar

Javaのソフトウェアを配布しようとしたときにサードパーティの依存ライブラリも含めてまとめて配布(all-in-one)できるというメリットがあるものの, 冗長が多くなったり容量が大きくなるなどのデメリットもある.

fat JAR, JAR with dependenciesともいう. Uberはドイツ語でOverの意. UberEatsとは無関係.


JDK Index

📝OpenJDK

Javaのフリーかつオープンソースの実装. Oracleが中心になって開発されている.

📝Java SEに基づいた開発ツールを提供.


OpenJDK - Wikipedia

📝Oracle JDK

OracleはOracle Corpolationという企業名. そのメンテナンスしているJDK.

オープンソースの📝OpenJDKとOracle JDKはかつては別々であり対義語だったが, いまはOracleがOpenJDKのメンテもしているので, 現在はあまり区別はなくなった.

あえていえば, OracleがビルドしてOracle HPからダウンロードできるものがOracle JDK.

JDK開発ツールまとめ

開発を補助するツールがいろいろある. それらのコマンドラインツールは(たとえばManjaro Linuxだと), /usr/lib/jvm//default/bin の配下にうじゃうじゃインストールされている.

JDKの開発ツール

  • jps: JavaプロセスID確認.
  • jstack: スタック情報出力.

jps

JVM上で動作しているJavaプログラムのPIDを確認. 他のコマンドもたいていPIDを指定して情報を確認するので, まずこのコマンドを叩くところからが起点になる.


現在動いているJVMのオプションを知るには,

$ jps -lvm

jcmd/jmap

ヒープダンプ取得.

$ jcmd <pid> GC.heap_dump heapdmp.hprof
 
# jmapは古いらしい.
$ jmap -dump:format=b,file=./heapdump.hprof <pid>

jstat

JVMのメモリ使用量調査.

以下で, 1秒ごとに使用量を表示. -hでヘッダ情報を間に挟む間隔を指定.

# -gc: 実際に使用している数値をKBで表示.
$ jstat -gc -h 3 <jpid> 1000
# -gcutil: 実際に使用している数値の使用率(%)を表示
$ jstat -gcutil -h 3 <jpid> 1000

ヒープ領域の使用量 = (S0C + S1C + EC + OC) / 1024.

References

tags. 🔖Java