私はJavaの世界の初心者です(7年間の低レベルのプレーンC)。
Java関連のサイトを読み始めたとき:
- http://wiki.apidesign.org/wiki/Main_Page
- http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/
私は既存の用語で混乱しました:
- クラス
- パッケージ
- モジュール
- 成分
- 容器
- サービス
- フレームワーク
- プラットホーム
用語の定義に関する多くのリソース(およびそれ以上)を見つけました:
- フレームワークvs.ツールキットvs.ライブラリ
- フレームワークとコンテナの違いは?
- Javaのコンテナは何ですか
- Javaコンテナの定義
- http://martinfowler.com/articles/injection.html(制御の反転と依存性注入パターン)
- http://www.cafeaulait.org/course/week8/36.html(AWTコンテナとは何ですか?)
- http://en.wikipedia.org/wiki/Web_container
- http://netbeans.org/features/platform/(NetBeansプラットフォーム)
- 「アプリケーションフレームワーク」とはどういう意味ですか?
- ソフトウェアフレームワークとは何ですか?
- フレームワークとライブラリの違いは何ですか?
- クラスライブラリとフレームワークの違いは何ですか
- https://stackoverflow.com/questions/11576018/what-is-the-difference-between-a-javascript-framework-and-a-library
- フレームワークとツールキットの主な違いは何ですか?
- http://blog.orderharmony.com/2011/07/libraries-vs-frameworks.html
- http://www.javacodegeeks.com/2012/04/frameworks-vs-libraries-as-inheritance.html
- ライブラリ、プラットフォーム、フレームワークの違いは?
- プラットフォームとフレームワークの違いは何ですか?
- フレームワークとプラットフォームの違いは何ですか
- モジュール、ライブラリ、フレームワークの違い
しかし、これらのリソースはそれぞれ独自の目的でそれらを定義しており、一般的なケースでは、たとえばモジュールとコンポーネントを区別することはできません。
これらの用語の意味を全体像で説明してください(単一クラスのプラットフォーム、コンテナを作成するために必要なモジュールの量など)。
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と同じですよね?テストを実行したいときにコールバックしますが、残りはフレームワークで行われます。TestCase
TestSuite