Java プラットフォーム
Javaで記述されたプログラムの開発および実行を行うことのできるソフトウェア群の総称.
📝Java実行環境(JRE)
Java Runtime Environment, JRE.
コンピュータでJavaプラットフォームを動かせるようにするためのツールセット.
📝Java SEや📝Java仮想マシン(JVM)とセットで提供される.
👉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ファイルとメタデータをアーカイブしたもの.
- Using JAR Files: The Basics (The Java™ Tutorials > Deployment > Packaging Programs in JAR Files)
- jar - Java Archive ツール
📝UberJAR
生産物のJarだけでなく依存関係のjarも含むjarの塊.
Javaをつかってスタンドアロンアプリケーションとして起動することができる.
java -jar exampleapp.jar
Javaのソフトウェアを配布しようとしたときにサードパーティの依存ライブラリも含めてまとめて配布(all-in-one)できるというメリットがあるものの, 冗長が多くなったり容量が大きくなるなどのデメリットもある.
fat JAR, JAR with dependenciesともいう. Uberはドイツ語でOverの意. UberEatsとは無関係.
- Uber-JAR - imagej
- java - What is a shaded jar? And what is the difference/similarities between uber jar and shaded jar? - Stack Overflow
- 📝UberEatsとは関係ない.
JDK Index
📝OpenJDK
Javaのフリーかつオープンソースの実装. Oracleが中心になって開発されている.
📝Java SEに基づいた開発ツールを提供.
📝Oracle JDK
OracleはOracle Corpolationという企業名. そのメンテナンスしているJDK.
オープンソースの📝OpenJDKとOracle JDKはかつては別々であり対義語だったが, いまはOracleがOpenJDKのメンテもしているので, 現在はあまり区別はなくなった.
あえていえば, OracleがビルドしてOracle HPからダウンロードできるものがOracle JDK.
JDK開発ツールまとめ
開発を補助するツールがいろいろある. それらのコマンドラインツールは(たとえばManjaro Linuxだと), /usr/lib/jvm//default/bin の配下にうじゃうじゃインストールされている.
- 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
👉Related
tags. 🔖Java