タイトルのとおり、Java という技術キーワードからだいぶ遠ざかってしまっている現状ですので、過去の拙い知識知見を元に、まずはということで、Java の入り口理解のリスタートをしてみます。
(小声: 筆者は10数年前に SJC-P を取得した程度の Java Beginner です。)
一旦ですが、個人的に把握を行いたいトピックに絞ってみます。
千里の道も一歩から。。
Java SE
Java SE ってなんでしたっけ、、というレベルからリスタートです。
EE とかも確かあったよなと。SE/EE の違いは何だったっけ、など。
Java SE Development Kit 19.0.2 downloads
最新バージョンでは19。自分が触って頃は Java SE 8 とかでしたので、クラスや機能はだいぶ増えたということですよね。
EE はサーバサイド Java のパッケージも含まれる開発キットということで、つまりは SE はサーバサイド関連のパッケージが含まれないエディション、ということですか。
Java 開発キットの基本は、Java コンパイラ(たしか javac ...)と、バイトコード(中間コード?)を実行するための処理系(java.exe で合ってるのか)が含まれた開発キット/ツールの集合という理解。
なので、この Java SE に JDK が含まれるということ。だよな。
そうだ、J2SE なんていう呼ばれ方してましたよね当時。
Java EE
Enterprise Edition。
サーバサイド Java によるアプリケーション開発のパッケージを含むエディション、と理解。
エンタープライズ Java、なんていう表現もありましたでしょうか。
サーバサイド Java アプリケーション開発とはなんだ、というところですが、Servlet と JSP によるサーバサイドアプリの実装、なイメージです。
当時このあたり多少触れたことはありましたが、そもそもなんなのかについてさっぱり理解できてなく、改めて調べてみよう。
Java Servlet
Servlet は、MVC モデルにおける Controller を担うクラスを提供する、とあります。
- ユーザーからの入力を受けて処理をModelに振り分けたり出力のViewに返したりするJavaServletのController
なるほど、MVC のコントローラーだったんですね Servlet って。
少し昔に Ruby on Rails で簡単な Web アプリケーションを作ったことがありまして、なんとなくですが MVC についての理解はありました。
JSP
- 入出力を担当するJSPで作るView
では JSP は、ですがこれは View とのこと。ほう、MVC の V ですね。
MVC モデルにおける View は、個人的にはイコールでテンプレートエンジンの印象を持ってます。
Rails で言うところの ERB でしょうか。
となると、残る Model 部分のソフトウェアはサーバサイド Java アプリケーション開発において何があるのか。
調べたところ、Java Beans なるキーワードが!
当時 Beans のキーワードを目にする機会があったのですが、用途・目的がさっぱりでしたね。
ようやくふんわりな理解に至りました。
OpenJDK
そのままの理解でいけば、JDK 開発のオープンソースコミュニティですよね。
Java って当時はサン・マイクロシステムズにて開発が進められていて、その時点ではまだプロプライエタリなソフトウェアであったと記憶してます。
それがどこかのタイミングでオープンソースに移行したということなのか。
2006年11月13日、サンはJava仮想マシンであるHotSpotとJavaコンパイラを GNU General Public License のフリーソフトウェアとしてリリースし、JDKの残りの部分(Javaランタイム環境など)も2007年3月までにGPLでリリースする予定だが、
オープンソース化はこのタイミングだったんですね。
オープンソース化されたことで、Linux (Linuxカーネル/GNUソフトウェア群)のように、各所のベンダやコミュニティによるディストリビューション展開がなされること想像つきますね。
神様みたいな記事がありました。ありがたやありがたや~。。
この神様記事の最終更新は2020年と数年経過はしていますが、OpenJDK ディストリビューションにおけるポイントをいくつかピックしてみます。
- OpenJDK は、あくまでソースコードを成果物とするため、OpenJDK の実装をアプリケーションとして利用するには自前でビルドする必要あり
- ビルド済みのバイナリを利用する場合、他ディストリビューションから入手できる
- ディストリビューションごとの差異として、サポート期間(EOL)、拡張機能(JavaFX 等)の提供など、特色が異なる
ディストリビューションはまだ他にありますが、さすが巨大ソフトウェアである、、といったところでしょうか。
当方これまで Linux を扱った仕事をそれなりに結構まあまあやってきたこともあり、Java も同様に、オープンソースプロジェクトからディストリビューション展開されている流れはすんなり理解出来ましたね。
最後に
これ購入しました!読み込みます!