我是 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
- 库、平台和框架之间的区别?
- 平台和框架有什么区别?
- 框架和平台有什么区别
- 模块、库和框架之间的区别
但是这些资源中的每一个都是根据自己的目的定义它们的,在一般情况下,我仍然无法区分例如模块和组件。
请在大图中解释这些术语的含义(可以是单一类平台,制作容器需要多少模块等)。
2019 年更新来自https://www.artima.com/lejava/articles/reuse3.html(我的突出显示)
Bill Venners:框架、平台和工具包之间有什么区别,不同的灵活性需求是什么?
Erich Gamma:我将平台与长期稳定性联系在一起。在平台之上构建是安全的。平台提供兼容性保证。框架通常不具备这种品质,而且我已经看到许多框架在稳定性方面的失败。如果您查看 Eclipse,是的,它包括框架、工具包并提供平台 API。所有这些都捆绑为插件。框架抽象并提供更高级别的默认功能。为此,框架需要处于控制之中。这种失控可能导致有时称为框架炎。
Bill Venners:工具包不是因为...
Erich Gamma:使用工具包,您可以创建和调用工具包对象并注册侦听器以对事件作出反应。你在掌控之中。框架试图控制并告诉您何时该做什么。工具包为您提供构建块,但由您来控制。
另一个引文回答了我天真的问题,有多少类使某个东西成为框架:
https://www.artima.com/lejava/articles/reuse.html
Erich Gamma:...例如,JUnit 是一个小型框架。它是框架的“Hello, world”。您已定义
Test
、TestCase
和TestSuite
关系。此外,您可以通过在某处子类化来连接到框架。他们使用所谓的好莱坞原则“不要打电话给我们,我们会打电话给你”。该框架允许您定义您的自定义行为,并在轮到您做某事时回叫您。与 JUnit 一样,对吗?当它想为您执行测试时,它会回调您,但其余部分在框架中完成。