ぐろーでぃあのTechブログ

ゆるりとTechブログをPostしていきますよと。。

可能な限り、JakartaEEについてできれば理解を深めたいという格好です。

Jakarta EE とは何か。

Java に触れていた10数年前の当時、よくわからないが何やらよく耳にするキーワードランキング第2位に君臨していた Jakarta EE。

(なお1位は Java Beans。不動)

Jakarta EE とは何か

Jakarta EE - Wikipedia

Jakarta EEは、Javaで実装されたアプリケーションサーバの標準規格及びそのAPIを定めたもの。Java Platform, Standard Edition (Java SE) の拡張機能の形で提供される。

Java SE を機能拡張したものであるということで、エンタープライズ Java 開発において利用されるキーワードであると理解しました。

つまり、J2EE

主に小規模?大規模サーバーシステムの標準仕様として、動的HTTPサーバ機能、自動トランザクション管理機能、データベース接続機能、メッセージング機能、各種通信プロトコル機能がAPIとして定められている。

Java にてWebアプリケーションを開発/実装する際に必要となるであろう機能一式が提供されている、それが Jakarta EE。

DB接続機能なんて特にそういうことですよね。

Java EEの権利はサン・マイクロシステムズを買収したオラクル)が保有してきたが、同社は2017年にJava EEEclipse Foundationに寄贈してオープンソース化をすることを発表。Java EEの商標については引き続きオラクルが保有するため、Java EE 9以後はJakarta EEの名で開発が進められる事が発表された。

なるほど、もとは J2EE だがオープンソース化に伴い Eclipse コミュニティに移管したということで。

Jakarta EEの機能を用いたアプリケーションを動作させるには、Jakarta EEの仕様を実装した実行環境やライブラリが必要である。Jakarta EE SDKには、Jakarta EEに準拠したオープンソースアプリケーションサーバであるGlassFish Open Source Editionが同梱されている。

Jakarta EE 準拠のエンタープライズアプリケーションを動作させるには、その仕様に応じたアプリケーションサーバ上で動作させる必要がある。

Javaアプリケーションサーバといえば当方 Apache Tomcat なイメージでしたが、たしかに GlassFish というキーワードも当時よく耳にしました。GlassFishJavaアプリケーションサーバだったんですね。しかも Jakarta EE の標準であると。

インフラエンジニアとして良い感じに稼働していた時代がありましたが、その時は Java アプリケーションサーバといえば Tomcat 一択ではあったんですよね。。

となると、TomcatGlassFish との違いはどんなだ? という疑問。

Tomcat では Jakarta EE 準拠のアプリケーションは動作するのか? とかとか。

さらに言うと、Java におけるエンタープライズアプリケーションの環境は、漏れなく Jakarta EE が標準なんだろうか。

オープンソース化されているのであれば、エンタープライズJavaにおいて、アプリケーションサーバ環境にてその他のディストリビューションというかフォークがあるような気がしてならない。

TomcatJakarta EE(J2EE)

Apache Tomcat - Wikipedia

Apache Tomcat(アパッチ トムキャット)は、Java ServletJavaServer Pages (JSP) を実行するためのWebコンテナサーブレットコンテナ、サーブレットエンジン)である。

という文脈。

TomcatServletJSP を動かすためのソフトウェアであると。そもそもが J2EE 準拠で開発・誕生しているということですね。機能の差異はあれど、言い換えれば GlassFish で動くエンタープライズJavaアプリケーションを、Tomcat へ移植することは比較的容易と言えるかもしれません。

Webコンテナ(サーブレットコンテナ、サーブレットエンジン)という人

コンテナといえば Docker という具合です。現状。

たしかに Java のWebアプリ開発においてコンテナというキーワードは良く聞いてた気がします。コンテナというとすごく抽象的な表現な気がしてならないですね。Jakarta EE におけるWebコンテナの実態はどういったものか。理解しよう。(以前に業務で Tomcat の構築を行ったことがあり、その時の記憶も頼りに考察含む)

  • Java の文脈ではサーブレットコンテナとも。
  • サーブレットコンテナ、イコール Tomcat などとも。
    • その同列に、GlassFish, JBoss 等?
    • IBM 社の WAS もここに入るのかなど
  • Javaアプリケーションサーバ、イコール、サーブレットコンテナとも。
  • サーブレットコンテナ(ニアリーイコール Tomcat と仮定して)は、リクエストに対しセッション管理や、プロセス(Java なのでスレッド単位であるとも)のライフサイクル管理、MVC モデルで言うところの Controller(== Java Servlet) からのレスポンスをリクエスト元にレスポンスする、などの役割を担う人
    • 広義のWebサービスへのアクセスは、ブラウザというか UserAgent からのリクエストは tcp/443 がスタンダードでありますから、前段の Web Server(Apache httpd 等) から発行される Servlet へのリクエスト、と一旦理解
    • なのでサーブレットコンテナがリクエストを返却する相手方は、大概 Web Server の人
  • Servlet へのリクエストをロギングしたりもするのでは、と考察
  • J2EE アプリケーションへの、ヒープメモリの確保やハードウェアリソースのチューニングも行えたりすると考察

つまりですが、J2EE アプリケーションにおける便利ツールなのではサーブレットコンテナの御方は、と一旦理解しました。なんか少しスッキリしました。

となると、TomcatGlassFish を代表するサーブレットコンテナは各所存在していて、それらがどうなのかとかどう差別化が成されているのかとか、疑問になります。ソフトウェア製品として有償であるとか無償であるとか。オープンソースなのかそうでないのか、とかの差異は想像がつきます。

Jakarta EE 準拠で動作するサーブレットコンテナは TomcatGlassFish 以外に他に何がある

パッと思いつくのは WAS, JBossOracle の Web Logic もサーブレットコンテナだったのですね。

その他国産メーカーからも有償製品として J2EE 準拠のサーブレットコンテナがリリースされている。

終わりに

Jakarta EE とは、で始まった本タイトルですが、おおよその理解は出来た気がします。

次回は Java アプリケーション開発における IDE について掘り下げ理解いきます。

以上。

まずは Java への入り口理解をリスタートしてみるというお話し

タイトルのとおり、Java という技術キーワードからだいぶ遠ざかってしまっている現状ですので、過去の拙い知識知見を元に、まずはということで、Java の入り口理解のリスタートをしてみます。

(小声: 筆者は10数年前に SJC-P を取得した程度の Java Beginner です。)

一旦ですが、個人的に把握を行いたいトピックに絞ってみます。

千里の道も一歩から。。

Java SE

Java SE ってなんでしたっけ、、というレベルからリスタートです。

EE とかも確かあったよなと。SE/EE の違いは何だったっけ、など。

www.oracle.com

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 アプリケーション開発とはなんだ、というところですが、ServletJSP によるサーバサイドアプリの実装、なイメージです。

では ServletJSP って何する人でしょうか。

当時このあたり多少触れたことはありましたが、そもそもなんなのかについてさっぱり理解できてなく、改めて調べてみよう。

Java Servlet

Servlet は、MVC モデルにおける Controller を担うクラスを提供する、とあります。

1. MVCモデルとは?

  • ユーザーからの入力を受けて処理を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 って当時はサン・マイクロシステムズにて開発が進められていて、その時点ではまだプロプライエタリなソフトウェアであったと記憶してます。

それがどこかのタイミングでオープンソースに移行したということなのか。

ja.wikipedia.org

2006年11月13日、サンはJava仮想マシンであるHotSpotJavaコンパイラGNU General Public Licenseフリーソフトウェアとしてリリースし、JDKの残りの部分(Javaランタイム環境など)も2007年3月までにGPLでリリースする予定だが、

オープンソース化はこのタイミングだったんですね。

オープンソース化されたことで、Linux (Linuxカーネル/GNUソフトウェア群)のように、各所のベンダやコミュニティによるディストリビューション展開がなされること想像つきますね。

news.mynavi.jp

神様みたいな記事がありました。ありがたやありがたや~。。

この神様記事の最終更新は2020年と数年経過はしていますが、OpenJDK ディストリビューションにおけるポイントをいくつかピックしてみます。

ディストリビューションはまだ他にありますが、さすが巨大ソフトウェアである、、といったところでしょうか。

当方これまで Linux を扱った仕事をそれなりに結構まあまあやってきたこともあり、Java も同様に、オープンソースプロジェクトからディストリビューション展開されている流れはすんなり理解出来ましたね。

最後に

gihyo.jp

みんなのJava OpenJDKから始まる大変革期!

これ購入しました!読み込みます!

ブログ再開します。(希望的観測)

どうもこんにちは。グローディアです。 はてなブログ Pro を契約してから記事2本で更新を滞らせるという体たらくでしたが、こちら再開します。

当初はクラウドサービスであるところの Microsoft Azure をネタにと考えてましたが、少し方針転換がありまして、以降は Java を取り扱ったブログ記事を Post していこうかというところです。

なにとぞ。

Azureを取り巻く市場分析およびクラウドシェア

概要

  • Azure の各所市場分析を行う
  • プロダクト推進のターゲットとして Azure でよいのか? の根拠を持つためにも。

Azure でよいのか? ゆるい市場調査

  • 国内クラウド利用市場

    • 順調な成長率。2025年の市場規模は、2020年比2.4倍 2兆5,866億円 になるとの予測も。

    market

  • クラウドシェア動向

    • 国内クラウドシェアで、近年 AWS 横ばい
      • ゆるやかに減少してるとの情報も。
    • Azure, GCP が追従している
      • Azure が猛追してる、との情報も。

    research

各所の考察

  • なぜ AWS は横ばいとなっているのか

    • Azure 推しを強めるためのカウンタートピック
    • AWS が横ばいなのは Azure が伸びているからである、という逆説的な考察にもなりうるかと。
    • 詳しくは後述
  • Azure が成長/追い上げている?

    • Windows Server 2008 の EOS 施策

      • (2年前の文献ではある)
      • ws2008 終了に際して、3年間の更新プログラムを Azure 上で無償提供
        • MS の剛腕。
      • Azure 以外の環境では有償とした。
        • ws2008
      • これにより、ws2008 のリプレース先に Azure を選択する Sier が増えたことになる。
      • Windows Server は MS の製品なので、完全にコントロールしてる。
      • 今後も MS 製品において、EOS を期に Azure への移行を優位にする剛腕コントロールを行う機会はありそうかも?
        • 例えばオンプレWindows
        • Windows 365/Cloud PC がまさかそうなるやもなど。。
        • オンプレ型 MS 製品の EOS の動向を事前に押さえておくのは戦略としてアリではと思ったり。
    • パートナー戦略

      • MS はこれまで Windows/Office 製品にて広範囲にパートナーを拡大していた。

      • いざ Azure を売ろうとする時に、抱えてるパートナー社の地盤が相当強い

      • 良い意味での多勢に無勢

      • 一方 Amazon は強いパートナーに絞り少数精鋭で展開する方向性、との文献もよく目にする。

      • その差が徐々に結果として表れているのでは、という以下参考文献による見解

      • AWSのパートナー戦略は強いパートナーに絞り、少数精鋭型の展開をしています。実際に足切りなども実施しています。一方でAzureはWindowsやOffice製品などの間接販売を長年培ってきた経験もあり、広範囲に手厚いパートナー支援をしています。私はこの差が大きいと思います。結果的に多勢に無勢でAzureのシェアが伸びてきており、今後もこの傾向が続くと予想しています。

    • 一般企業(非コア市場)への浸透

      • コア市場では先進的なクラウドサービスである AWS に着目し積極利用をしていた。
      • 今後は先進的ではない非コア市場である一般企業によるクラウド利用が増えていく見込み。というより実際に増え始めていると。
      • こういった企業では「クラウドでインフラを使う」よりも、「Windows/Office 等のアプリケーションをクラウドで使いたい」の思考なのではと。
      • Azure は SaaS の性質で、これを求めるユーザにフィットしやすい、という文脈は個人的にはしっくりきます。
      • となると、非コア市場のクラウドサービス浸透により Azure/Microsoft 365 がシェアを伸ばしていくのでは、という考え方も併せてしっくりくる。
    • サービスパフォーマンスの拮抗

      • コンポーネント
        • 各 IaaS, SaaS のサービス品目まとめ等々を見る限り、さすがに Serverless 周りでは AWS 優位かという印象。
        • その他のコンポーネントは(顕著な筆者の勉強不足につき)特段の差異は感じられなかった。
      • コスト
        • 仮想マシンのコストは Azure に軍配
        • 運用(非機能要件)まで見据えたコストだと AWS に軍配
        • という見方があるぽい。
        • コスト要因でクラウドサービス選定判断が揺らぐほどの致命的な差は両者無い?
    • Microsoft 365(inc: Office 365)/Windows 365 を抱える MS

      • 前述の「Windows/Office 等のアプリケーションをクラウドで使いたい」が加速するのであれば、それは分かりやすく Azure の出番となる。
      • Windows 365 が台頭してくるとなると、バーターで AD 連携もクラウドでやっちまえとなる潮流が生まれるなど
      • 昨今のリモートワークが常態化することで、既存の OA 環境がクラウドネイティブになっていく未来
      • Microsoft 365 と、今後 MS が推していくであろう Windows 365 が Azure をさらに高みへと昇華させる未来
    • 後発に強い MS !?

      • これまでなんかありましたっけ、と。
      • 後発で MS が市場を席巻した分野/プロダクトなど。
      • パソコンOSの王者が Windows であり続ける限り、MS プロダクトを推進するという判断は妥当か。

        • Windows/Office のコンビが向こう十数年、衰退することは考えにくいであろうと判断。
        • Chromebook/Google Spreadsheet の組み合わせが猛追する未来はあるのか。。

まとめ

  • 将来性も見越して Azure 良きと判断。
  • 前述した「一般企業(非コア市場)への浸透」にターゲットを絞るのであれば、AWS との比較はあまり有益では無い気がする。
  • これまで MS が Windows/Office をセールスしてきたの如く Microsoft 365/Windows 365 を今後はパワーセールスする傾向が見えてくるのであれば、Sier としてもそこに足並みを揃えたいと考える。
  • 次は Windows 365 を掘り下げます。

Azureブログはじめました。

グローディア株式会社と申します。 Azure を取り巻く情報や考察などを発信したく、ブログを立ち上げてみましたの巻です。

まずは週1ぐらいで情報発信できればと初回から弱気でスタートしてみます。 何とぞよろしくお願いします。