Java周りの用語についてまとめる
公開日: 2024/04/14
概要
関連用語が多くややこしいので疑問点を解消しつつまとめる。正しいのかわからない。
Java SE
Java Standard EditionをJava SEと略す。 Java言語自体と基本的なAPIなどの仕様とJavaの実行環境であるJVM(Java仮想マシン)をまとめたもの。 基本的なAPIにはStringクラスや標準入出力なども含まれる。
Java EE(Jakarta EE)
Java Enterprise EditionをJava EEと略す。 現在はOracleからEclipse Foundationにメンテナンスが引き継がれ、その際にJakarta EEに名称を変更した。
Java SEにアプリケーションサーバの仕様を追加拡張している。 例えばJava ServletもJava EEの仕様のひとつであるし、それ以外にもたくさんの仕様がある。
Java EEはあくまでも仕様でありそれらの実装は複数存在している。 GlassFishはJava EEの実装している。 TomcatはJava EEの一部の機能を実装している。
JDKとJRE
それぞれJDKはJava Development Kit、JREはJava Runtime Environmentを指す。 JDKはJavaの開発に必要なツールをまとめたもので、JREはJavaを実行するのに必要な環境をまとめたもの。 JDKの中にJREは含まれているため、JDKを用意すればJREを別途用意する必要はない。
JDKにはコンパイラであるjavacやその他デバッガや分析ツール等も用意されている。
JVM
Java Virtual Machineの略で日本語で言うならJava仮想マシン。 Javaをコンパイルしたコードを実行する。 JVMを用意すれば同じコードを異なるプラットフォームで実行することができる。
Java Servlet
JavaでWebアプリケーションを実装する際に必要なAPIである。 Java EEの持仕様の1つである。
Webコンテナ(Servletコンテナ)
Java EEのアプリを実行するためのソフトウェア。 上記で記載したTomcatとGlassFishもWebコンテナの一つである。
TomcatやGlassFishにJava EEの実装が含まれているため、 JDKでJavaアプリケーションをコンパイルする際にはServletの実装は含まれていない。 コンパイルしたコードにはAPIのインターフェースを使うことだけが記されている。 インターフェースとして統一されているので、TomcatでもGlassFishで動かすことができる。
Catalina
Apache Tomcatを構成する要素のひとつでサーブレットの実行などはCatalinaが担当している。
各種フレームワーク
フレームワークがいくつかあるがそれはJava Servletの機能を使ったうえで実行される。 JavaScriptで言うとNode.jsの上にExpressを導入する感じ?
- Spring Framework
- Struts
- Jersey
ネットで調べるとJava EEもフレームワークの1つとして紹介されていることが多く混乱するが、 Java Sevletを直で触ることを意味している? Java EEの機能としてJSFやJAX-RSという仕様があるのでその実装をフレームワークとしている? そうするとJAX-RSを実装するJersey等を指しているのだろうか?
ビルドツール(Ant, Maven, Gradle)
Javaアプリケーションをビルドするためのツール。 ビルドのために依存関係の解決やインターネット上のリポジトリからダウンロードしてくれる。