我是Java世界的新手(7年的低级平原C)。
当我开始阅读Java相关网站时:
我对现有的术语感到困惑:
我找到了许多关于术语定义的资源(还有更多):
但是这些资源中的每一个都根据自己的目的来定义它们,在一般情况下我仍然无法区分模块和组件。
请在大图中解释这些术语的含义(可以是单一类平台,制作容器需要多少模块等)。
更新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一样,对吗?当它想要为你执行测试时它会回调你,但其余的都是在框架中完成的。
class
类是在基于类的面向对象编程中创建对象的蓝图;在学习Java的其他任何内容之前,你应该学习OOP的基础知识,理解对象是什么,类是什么,什么是继承,多态,封装。
package
包是命名空间;它让你处理命名冲突。它基本上允许你有两个名为Employee的类,如果它们在不同的包中。
module
它可能指的是Java库的分发和使用方式--JAR,WAR,EAR。
component
可以被视为AWT(或Swing中的JComponent)中GUI的基类,或者可以看作是一种EJB - 一种满足某些要求的POJO(普通旧Java对象);它可能具有其他含义并取决于背景。
container
在企业应用程序中,您显然最终会使用一些库和Java EE;关于Java EE库的事情是它只提供API接口而不是实现。然后,您编写和构建的应用程序将部署到container
服务器中,该服务器随Java EE API的实现一起提供。有两种类型的容器:Web容器(仅用于实现特定于Web的技术)和完整的Java EE容器(随Web和其他Java EE技术的实现 - 命名服务,持久性,事务等)。
service
Java中没有特殊含义。它可能与Web服务有关,它基本上提供了通过网络进行进程间通信的高级方法。
platform
Java中没有特殊含义;它可以被视为底层开发平台(Windows,Linux)或云趋势,它可以指平台即服务,其中云提供商附带基础设施和其他基本软件(操作系统,数据库,容器)。