新しいJEEプロジェクトが開始されるとき(これらのテクノロジーが適用される場合)は、EJB 3ではなくSpring + Hibernateの組み合わせを使用することを好むと私は考えています。
ジュニアプログラマーは、EJBの代わりに 助言 をすることすらあるようです。
これは個人的な好みですか、それともそれに関連する理由がありますか? (たとえば、EJBやテクノロジーの肥大化に対するパフォーマンスの理由や学習曲線に対する不信を引き起こした、以前のEJBバージョンによって作成された個人的な傷跡)?
EJB 3+フレームワークは、アノテーション構成のパーシスタンスフレームワーク、およびアノテーション構成の依存性注入を可能にするCDIの回答としてJPAとともに提供されたため、実際にはかなり優れています。また、その溶接の上に追加します。一方、Springは現在、アノテーションを介した構成でゲームに追いついています。
そうは言っても、EJB1および2に対する歴史的なバックラックを軽視すべきではありません。彼らは、エンタープライズアプリケーションの作成に伴う問題を解決するだけでなく、見事にに失敗しました。エンタープライズおよびWebアプリケーション開発者が直面している真の問題についてパルスを取得し、実際に彼らが実際に必要とするソリューションを提供することは、デザイナー側の完全な失敗でした。
加えて、現在のJavaの現在の方向と、現在のスチュワードと古いSun JVMの所有者への信頼の欠如) 。多くの人々は、オラクルがJava=を改善し、その方向性を導くと信じています。また、Apache Software Foundationがタオルを投げるだけであるという恐れもあります。ますます多くの人々がJavaの将来のためのOpenJDKですが、エンタープライズでの採用に必要な場所ではありません。
エンタープライズアプリケーションがJavaが歴史的にこれまでずっと世界でナンバー1のプログラミング言語であった理由である主な理由です。これがMicrosoftである理由です。は、.NETテクノロジでJavaに対して多くの根拠を得ています。
非エンタープライズベースのJavaアプリケーション開発者は、ソリューションの構築を支援するためにOpenJDKやその他のオープンソースフレームワークにますます向きを変えており、一部は決して振り返ることがありません。技術的にはJEEが同等のSpringアプリケーションと完全に対抗できても、JEEを正当性の最前線に戻すには遅すぎます。
EJBには多くの手荷物があります。その手荷物の一部は、間違った対象者を対象としたものでした。もう1つの部分は、最初の2つのバージョンがまったくのがらくただったということです。
元のEJBバージョンを見ると、EJB開発者がEJB準拠のコンテナ内で使用できるパッケージソリューションを作成できるように設計されていました。社内ショップでは、このレベルの抽象化は不要でした。これは、サードパーティのEJBコンポーネントベンダーの市場を繁栄させる完璧なソリューションでした。しかし、コンテナベンダーはマーケティングに熱心であり、日々の開発のための実行可能なソリューションとして自社製品を大量に販売していました。これは、すべてのアプリケーションコードをCOM +コンポーネントとしてビルドするのと同じです。
元のJ2EE仕様の背景については、関係するほとんどのベンダーがCORBAサーバーを使用しており、今後これらの製品を活用したいと考えていました。 EJB仕様はIIOPプロトコル(実際にはJava RMIはIIOP上の薄層でした)に基づいて構築されました。CORBAはその複雑さのためにすでに拒否されており、EJBは単なるCORBAに偽装していたため、実際には、EJBの抽象化により、純粋なCORBA実装よりも作業が困難になりました。
ゴムが舗道にぶつかると、人々はEJBのパフォーマンスがひどいことに気づきました。すべての通話がリモートコールであり、最初からアプリケーションを正常に起動して実行することさえ難しいため、人々はすぐに別の方法を探しました。 JSPコンテナーで実行されるHibernateとSpringがソリューションとなりました。
EJB 3はこのアプローチを「採用」しました。しかし、それはまだ多くの利点を提供しない一般的な妥協です。サードパーティのEJBコンポーネント市場はまだ存在しないため、EJBコンテナを使用してソリューションを構築しても意味がありません。
短い話です。 EJB 3は最初の2つの反復に対してvastの改善ですが、それでもコストを上回る十分な利点はありません。