ライブラリがアプリケーションサーバー環境外で機能できないのはなぜですか?
実際にできます。ライブラリのほとんどは、スタンドアロンで直接使用するか(Java SEで)、. warに含めることができます(実際には、ほとんど常にTomcatです)。JPAのようなJava EEの一部には、それぞれの仕様に、Java SEでの動作と使用方法を明示する明示的なセクションがあります。
どちらかと言えば、ここで問題となっているのはアプリケーションサーバー環境自体ではなく、他のすべてのライブラリとそれらを統合する統合コードの存在です。
そのため、アノテーションは、すべてのライブラリ(EJB、JPAなど)がこのスキャンを何度も繰り返すのではなく、すべてのクラスに対して1回だけスキャンされます。また、そのため、CDIアノテーションをEJB Beanに適用し、JPAエンティティマネージャーをそれらに挿入できます。
単純なコードをコンパイルしてメールを送信するためだけに、JBossのように巨大なものが必要なのはなぜですか?
この質問にはいくつか問題があります:
- コンパイルには、API jarのみが必要です。これは、Webプロファイルの場合は1 MB未満、完全プロファイルの場合は1 MB強です。
- 実行するには明らかに実装が必要ですが、「大規模」は過大評価です。たとえば、OpenJDKは約75MBで、TomEE(メールサポートを含むWebプロファイルの実装)はわずか25MBです。GlassFish(フルプロファイル実装)でさえ、わずか53MBです。
- メールは、Java SE(およびTomcat)から完全に正常に動作し、スタンドアロンのmail.jarおよびactivation.jarを使用します。
Java EEライブラリが「標準」ではなく、通常のJVMダウンロードやSDKに含まれているのはなぜですか?
ある意味でJava EEは、すでに大規模なJDKを、管理とダウンロードが容易なチャンクに分割する最初の試みの1つでした。ヘッドレスサーバーでいくつかのコマンドを実行するだけで、グラフィカルクラス(AWT、Swing)とアプレットがJREの内部にあることに人々はすでに不満を抱いています。そして、すべてのJava EEライブラリを標準のJDKに含めたいですか?
モジュール性のサポートが最終的にリリースされると、多くのものがパッケージとして個別にインストールできる小さな基本JREができます。たぶん、Java EEを構成する多くのクラス、あるいはすべてのクラスも、おそらくそのようなパッケージになるでしょう。時が教えてくれる。
標準Javaの主なフレーバーが2つしかないのに(Oracle JVM / SDK | OpenJDK JVM / JDK)、Java EE製品が非常に多いのはなぜですか?
Java SEには、2つ以上のフレーバーがあります。少なくともIBM JDK、以前のBEAのもの(買収のためにOracle / Sunのものに統合されているJRocket)、他のさまざまなオープンソース実装、および組み込みで使用するための多数の実装があります。
Java SEおよびEEが仕様であることの背後にある理由は、多くのベンダーおよび組織がそれを実装できるため、競争を促進し、ベンダーロックインのリスクを軽減するためです。
これは、CおよびC ++コンパイラでも同じです。競合する多くの製品があり、すべてC ++標準に準拠しています。
Java EEライブラリのバージョンが標準のJavaライブラリリリースと同期していないのはなぜですか(Java EE 6とJava 7)
Java EEはJava SEをベースに構築されているため、遅れをとっています。ただし、バージョンは対応しています。Java EE 5にはJava SE 5が必要です。JavaEE 6にはJava SE 6などが必要です。それは主に、Java SE Xが最新であるとき、Java EE X-1が最新であるということだけです。