54

私はJavaの世界の初心者です(7年間の低レベルのプレーンC)。

Java関連のサイトを読み始めたとき:

私は既存の用語で混乱しました:

  • クラス
  • パッケージ
  • モジュール
  • 成分
  • 容器
  • サービス
  • フレームワーク
  • プラットホーム

用語の定義に関する多くのリソース(およびそれ以上)を見つけました:

しかし、これらのリソースはそれぞれ独自の目的でそれらを定義しており、一般的なケースでは、たとえばモジュールとコンポーネントを区別することはできません。

これらの用語の意味を全体像で説明してください(単一クラスのプラットフォーム、コンテナを作成するために必要なモジュールの量など)。

UPDATE 2019 https://www.artima.com/lejava/articles/reuse3.htmlから(私のハイライト)

Bill Venners:フレームワーク、プラットフォーム、ツールキットの違いは何ですか?また、さまざまな柔軟性のニーズは何ですか?

Erich Gammaプラットフォームでは、長期的な安定性を関連付けます。プラットフォームの上に構築するのは安全です。プラットフォームは互換性を保証します。フレームワークにはこの品質がないことが多く、安定性に関して多くのフレームワークの障害が発生しています。Eclipseを見ると、そうです、フレームワーク、ツールキットが含まれており、プラットフォームAPIを提供しています。これらはすべてプラグインとしてバンドルされています。フレームワークは抽象化し、より高いレベルのデフォルト機能を提供します。そのためには、フレームワークを制御する必要があります。この制御の喪失は、フレームワーク炎と呼ばれることもあるものにつながる可能性があります。

ビル・ベナーズ:そしてツールキットはそうではありません...

Erich Gammaツールキット使用して、ツールキットオブジェクトを作成および呼び出し、リスナーを登録してイベントに反応します。あなたがコントロールしています。フレームワークは制御を試み、いつ何をすべきかを教えてくれますツールキットビルディングブロックを提供しますが、制御するのはあなたに任されています。

別の引用は、いくつのクラスが何かをフレームワークにするかという私の素朴な質問に答えます。

https://www.artima.com/lejava/articles/reuse.html

Erich Gamma:... JUnitは、たとえば小さなフレームワークです。これは、フレームワークの「Hello、world」です。、、、および関係が定義されていますTest。また、どこかでサブクラス化することにより、フレームワークにフックします。彼らは、「私たちに電話しないでください、私たちはあなたに電話します」といういわゆるハリウッドの原則を使用しています。フレームワークを使用すると、カスタム動作を定義でき、何かをする番になったときにコールバックされます。JUnitと同じですよね?テストを実行したいときにコールバックしますが、残りはフレームワークで行われます。TestCaseTestSuite

4

2 に答える 2

51

class クラスは、クラスベースのオブジェクト指向プログラミングでオブジェクトを作成するための青写真です。Javaについて他のことを学ぶ前に、OOPの基本を学び、オブジェクトとは何か、クラスとは何か、継承、ポリモーフィズム、カプセル化とは何かを理解する必要があります。

package パッケージは名前空間です。名前の競合を処理できます。基本的に、異なるパッケージに含まれている場合は、Employeeという名前の2つのクラスを作成できます。

moduleこれはおそらく、Javaライブラリが配布および使用される方法(JAR、WAR、EAR)を指します。

componentAWT(またはSwingのJComponent)のGUIの基本クラスと見なすか、EJBの一種(いくつかの要件を満たすPOJO(Plain Old Java Object))と見なすことができます。他の意味を持つことも可能であり、文脈によって異なります。

containerエンタープライズアプリケーションでは、明らかにいくつかのライブラリとJavaEEを最終的に使用します。Java EEライブラリの特徴は、APIインターフェイスのみを提供し、実装は提供しないことです。次に、作成して構築したアプリケーションが、containerJavaEEAPIの実装が付属するサーバーにデプロイされます。コンテナには、Webコンテナ(Web固有のテクノロジの実装のみ)と完全なJava EEコンテナ(Webおよびその他のJava EEテクノロジの実装(ネーミングサービス、永続性、トランザクションなど))の2種類があります。

serviceJavaには特別な意味はありません。これは、基本的にネットワークを介したプロセス間通信の高レベルのアプローチを提供するWebサービスに関連している可能性があります。

platformJavaには特別な意味はありません。基盤となる開発プラットフォーム(Windows、Linux)と見なすことができます。または、クラウドトレンドでは、クラウドプロバイダーがインフラストラクチャとその他の基本ソフトウェア(OS、データベース、コンテナー)を備えたPlatform-as-a-Serviceを指す場合があります。

于 2012-10-31T12:08:05.830 に答える
32
  • クラス:
    これは、拡張子が.javaで、アプリケーションの作成に必要なすべてのオブジェクト、メソッドなどを含み、他のファイルから他のオブジェクトまたはメソッドを実装または拡張する通常のJavaファイルです。

  • パッケージ: 関数または名前で区切られたclass(.java)ファイルの束です。したがって、命名にも役立ちます。

  • モジュール: 大規模なアプリケーションは通常、外部よりも相互に緊密に接続されたいくつかの部分で構築されます。したがって、これらの部分に、外の世界よりも多くのアクセスを提供したいと考えています。また、共有データの同期を気にせずに、システムの多くのポイントでこれらのパーツを再利用したい場合もあります。この部分は、Javaではモジュールと呼ばれます。WAR、jarなどはJava言語ではモジュールと呼ばれます。

  • コンポーネント: コンポーネントは、より大きなプログラムまたは構造の識別可能な部分です。通常、コンポーネントは特定の機能または関連する機能のグループを提供します。オブジェクト指向プログラミングおよび分散オブジェクトテクノロジでは、コンポーネントは再利用可能なプログラムビルディングブロックであり、分散ネットワーク内の同じまたは他のコンピュータ内の他のコンポーネントと組み合わせてアプリケーションを形成できます。コンポーネントは、コンテナと呼ばれるコンテキスト内で実行されます。

  • コンテナ: コンポーネントは、コンテナと呼ばれるコンテキスト内で実行されます。コンテナは、JavaベースのJavaEEテクノロジのWebアプリケーションの重要なコンポーネントです。これは、Javaサーブレット、Javaサーバーページ(JSP)、Javaサーバーフェイス(JSF)など、サーバー側の個々のコンポーネントを維持する役割を果たします。サービスがどのように提供され、アクセスされるかは、Webアプリケーションとコンテナーの間の合意である契約によって決定されます。クライアントアプリケーションはコンテナの存在を認識せず、直接アクセスできないため、これによりJavaEEフレームワークにかなりのセキュリティが提供されます。したがって、Webコンテナは、Webアプリケーションコンポーネントを初期化し、コンポーネントに対してクライアント要求を呼び出す役割を果たします。

  • サービス: サービスは、同期および非同期アプリケーションの要求/応答設計パラダイムに基づく分散コンピューティングの進化形です。アプリケーションのビジネスロジックまたは個々の機能はモジュール化され、コンシューマー/クライアントアプリケーションのサービスとして提供されます。

  • フレームワーク: フレームワークは、フレームワークを使用するコードに明確な構造を課しますが、ライブラリはそうではありません。ソフトウェアでは、フレームワークは、アプリケーションの基礎を形成する再利用可能なソフトウェアプログラムのセットです。フレームワークは、プログラマーがアプリケーションをすばやく構築するのに役立ちます。以前は、複雑なWebアプリケーションを開発することは非常に困難でした。現在、Struts、Struts 2、Hibernate、JSF、Springなどのさまざまな種類のフレームワークを使用してこのようなアプリケーションを開発するのは非常に簡単です。

  • プラットフォーム: プラットフォームとは、SunのJava開発および実行環境全体を指します。Javaプログラムは、ターゲットコンピュータに常駐するランタイムエンジン(Java仮想マシン)によって実行されます。Javaには独自のオペレーティング環境が含まれているため、コンパイル後に単独で実行される他のプログラミング言語とは対照的に、Javaは「プラットフォーム」と呼ばれています。Java、Java 2、Java仮想マシンおよびJavaランタイム環境を参照してください。

于 2012-10-31T12:35:54.480 に答える