相対的なJava初心者からの簡単な質問:
JavaBeanとEJBの違いは何ですか?
Java Beanは、単なる一連の規則です。EJBは、J2EEビジネスコンポーネントの標準です。
具体的には、Java Bean:
たとえば、プロパティが「margin」のJava Beanは、最小限、次のようになります。
public class MyBean implements Serializable {
private int margin;
public MyBean() { }
public int getMargin() { return margin; }
public void setMargin(int margin) { this.margin = margin; }
}
EJBは、その名前にもかかわらず、ほとんど完全に無関係です。
この記事をご覧ください-JavaBeansとEnterpriseJavaBeans
まとめ:
JB
JavaBeansは、あらゆる領域でさまざまなタイプのJavaアプリケーション(アプレット、スタンドアロンアプリなど)を構築するために使用できる再利用可能なソフトウェアコンポーネントを開発するための低レベルのアプローチを採用しています。
EJB
Enterprise JavaBeansは、分散システムを構築するための高レベルのアプローチを採用しています。これにより、アプリケーション開発者はビジネスロジックのみのプログラミングに集中できるようになり、エンタープライズアプリケーションで必要なすべての「配管」コードを作成する必要がなくなります。
JavaBeansは、実行時に表示される場合と表示されない場合があります。たとえば、ビジュアルGUIコンポーネントは、ボタン、リストボックス、グラフィック、またはチャートです。
EJBは、非ビジュアルのリモートオブジェクトです。
JavaBeansは、単一のプロセスに対してローカルであることが意図されており、主にクライアント側で実行されることを意図しています。サーバー側のJavaBeansを開発することはできますが、代わりにEJB仕様を使用して開発する方がはるかに簡単です。
EJBは、サーバーにのみデプロイできるリモートで実行可能なコンポーネントまたはビジネスオブジェクトです。
JavaBeansは、アプレットとアプリケーションにまとめて構成できる汎用Javaコンポーネントを作成するためのコンポーネントテクノロジです。
EJBはコンポーネントテクノロジですが、元のJavaBean仕様に基づいて構築も拡張もされていません。
JavaBeansには、プロパティ・インターフェースと呼ばれる外部インターフェースがあり、ビルダー・ツールがBeanの機能を解釈できるようにします。
EJBには、その機能を外部ビルダーツールまたはIDEに説明するデプロイメント記述子があります。
JavaBeansには、BeanInfo
クラス、プロパティエディタ、またはカスタマイザが含まれる場合があります。
EJBには、BeanInfo
クラス、プロパティエディタ、またはカスタマイザの概念がなく、デプロイメント記述子に記述されている情報以外の追加情報を提供しません。
JavaBeansは型指定されていません。
EJBには、セッションBeanとエンティティBeanの2つのタイプがあります。
JavaBeansでのトランザクションの明示的なサポートはありません。
EJBはトランザクションである可能性があり、EJBサーバーはトランザクションサポートを提供します。
コンポーネントブリッジはJavaBeansで使用できます。たとえば、JavaBeanをActiveXコントロールとしてデプロイすることもできます。
ActiveXコントロールはデスクトップで実行することを目的としており、EJBはサーバー側のコンポーネントであるため、EJBをActiveXコントロールとしてデプロイすることはできません。ただし、EJBからCORBAへのマッピングを介したCORBA-IIOPの互換性は、OMGによって定義されます。
受け入れられた回答から理解するのは少し面倒だと思ったので、さらにいくつかのリンクをグーグルで検索し、回答を下回りました。
Enterprise JavaBeans(EJB) 3.1これらは、サーバー(アプリケーションサーバー)にEJBコンテナにコードをデプロイするように指示するJ2EE仕様です。
EJBテクノロジは、コンポーネントベースのビジネスアプリケーションの開発と展開のためのサーバー側コンポーネントアーキテクチャです。EJBテクノロジーにより、Java EE 6テクノロジーに基づく分散型、トランザクション型、セキュア、およびポータブルアプリケーションの迅速かつ簡素化された開発が可能になります。
単純な言語: EJBを作成してサーバーにデプロイする場合、リモート(RMIを使用したJNDIルックアップなどの手法を使用)またはローカル(アプリケーション内で)で呼び出すことができます。
一方、Java Beansは、ゲッターとセッターを備えた単純なプレーンJavaクラスであり、そのクラスはシリアル化されています。以下に例を示します。
public class MyBean implements java.io.Serializable
{
protected int theValue;
public MyBean()
{
}
public void setMyValue(int newValue)
{
theValue = newValue;
}
public int getMyValue()
{
return theValue;
}
}
つまり、EJBとJava Beansの比較はなく、どちらもまったく異なる概念です。