web-dev-qa-db-ja.com

クラスvsパッケージvsモジュールvsコンポーネントvsコンテナvsサービスvsプラットフォームJava world

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

Java関連サイト:

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

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

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

しかし、これらの各リソースは独自の目的でそれらを定義しており、一般的なケースではコンポーネントとコンポーネントを区別できません。

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

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

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

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

Bill Venners:そして、ツールキットはそうではありません...

Erich Gammatoolkits you ツールキットオブジェクトを作成して呼び出し、イベントに反応するリスナーを登録する。あなたはin controlです。 Frameworksが制御しようとし、いつ何を行うかを通知しますtoolkitbuilding blocksを提供しますが、制御するのはあなた次第です。

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

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

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

44
gavenkoa

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

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

moduleこれはおそらく、Javaライブラリが配布され使用される方法-JAR、WAR、EAR。

component AWTのGUI(またはSwingのJComponent)の基本クラスと見なすか、EJBのタイプ-POJO(Plain Old Java Object)として見ることができますそれはいくつかの要件を満たします;他の意味を持つことが可能であり、コンテキストに依存します。

containerエンタープライズアプリケーションでは、明らかにいくつかのライブラリとJava EE最終的に使用します。Java EEライブラリに関することは、 APIインターフェースであり、実装ではありません。その後、作成してビルドしたアプリケーションは、Java EE APIの実装に付属するcontainerサーバーにデプロイされます。2つのタイプがあります。コンテナーの:Webコンテナー(Web固有のテクノロジーの実装のみ)および完全なJava EEコンテナー(Webおよびその他のJava EEテクノロジーの実装に付属-ネームサービス、永続性、トランザクションなど)。

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

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

41
m3th0dman
  • クラス:
    それは正常ですJava .Java拡張子があり、アプリケーションの作成に必要なすべてのオブジェクト、メソッドなどを含み、他のオブジェクトまたはメソッドを他から実装または拡張するファイルファイル。

  • パッケージ:これは、クラス(.Java)ファイルの束であり、機能または名前によって分離されています。そのため、命名にも役立ちます。

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

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

  • Container:コンポーネントは、コンテナと呼ばれるコンテキスト内で実行されます。コンテナは、JavaベースのWebアプリケーションの重要なコンポーネントですJava EEテクノロジー。 Java servlets、Java server pages(JSP)and Java server faces (JSF)。サービスの提供方法およびアクセス方法は、Webアプリケーションとコンテナの間の契約である契約によって決定されます。これにより、Java EEクライアントアプリケーションはコンテナの存在を認識していないため、直接アクセスできないため、WebコンテナはWebアプリケーションコンポーネントの初期化とコンポーネントに対するクライアント要求の呼び出しを担当します。

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

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

  • プラットフォーム:プラットフォームは、Java Sunの開発および実行環境全体を指します。Javaプログラムは、ランタイムエンジン( Java仮想マシン)はターゲットコンピュータに存在します。Javaには独自の動作環境が含まれているため、他のプログラミングとは対照的に「プラットフォーム」と呼ばれています。コンパイルされると、それ自体で実行される言語。Java、Java 2、Java仮想マシンおよびJava Runtime Environment 。

30
Angel