Java世界中的类vs包vs模块vs组件vs容器vs服务vs平台[关闭]

Posted

技术标签:

【中文标题】Java世界中的类vs包vs模块vs组件vs容器vs服务vs平台[关闭]【英文标题】:Class vs package vs module vs component vs container vs service vs platform in Java world [closed] 【发布时间】:2012-10-20 21:03:51 【问题描述】:

我是 Java 世界的新手(7 年的低级纯 C)。

当我开始阅读 Java 相关网站时:

http://wiki.apidesign.org/wiki/Main_Page http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/

我对现有术语感到困惑:

类 包 模块 组件 容器 服务 框架 平台

我发现了很多关于术语定义的资源(以及更多):

Framework vs. Toolkit vs. Library Difference between framework and container? What are the containers in Java Definition of a Java Container 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 平台) What is meant by "application framework"? What is a software framework? What is the difference between a framework and a library? What is the difference between a class library and a framework https://***.com/questions/11576018/what-is-the-difference-between-a-javascript-framework-and-a-library What is the major difference between a framework and a toolkit? http://blog.orderharmony.com/2011/07/libraries-vs-frameworks.html http://www.javacodegeeks.com/2012/04/frameworks-vs-libraries-as-inheritance.html Difference between library, platform and framework? What is the difference between a platform and a framework? what is the difference between a framework and a platform Difference between a module, library and a framework

但是这些资源中的每一个都是根据自己的目的定义它们的,在一般情况下,我仍然无法区分例如模块和组件。

请在大图中解释这些术语的含义(可以是单一类平台,制作容器需要多少模块等)。

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”。您已定义 TestTestCaseTestSuite 和关系。此外,您可以通过在某处子类化来连接到框架。他们使用所谓的好莱坞原则“不要打电话给我们,我们会打电话给你”。该框架允许您定义您的自定义行为,并在轮到您做某事时回叫您。与 JUnit 一样,对吗?当它想为您执行测试时,它会回调您,但其余部分在框架中完成。

【问题讨论】:

嘿!停止关闭)) 停止尝试理解并开始做。从 Java 教程开始,您将默认回答一些问题。其余的将随着经验而变得清晰 您是否想在没有特定项目和编写任何 Java 代码的情况下理解整个 Java 世界及其所有术语?您是否尝试过先阅读 Oracle Java 教程? 我编写 JNI 接口并发布了几个安全 Java 库,但它仅使用算法(if/for/while)Java 1.1 功能。没有任何企业...正如我写的那样,我阅读了几篇参考资料以避免编写愚蠢的代码。来JAVA EE世界好难。 我很欣赏您尝试做的事情,但是要求提供大量定义的请求确实不是 Stack Overflow 旨在处理的问题。如果您绝对必须询问,请至少为您需要定义的每个术语发布一个单独的问题,并解释您对该术语的已知了解(用您的话来说,而不仅仅是一个链接)。跨度> 【参考方案1】:

class 类是基于类的面向对象编程中创建对象的蓝图;在学习 Java 的任何其他内容之前,您应该学习 OOP 的基础知识并了解什么是对象、什么是类、什么是继承、多态性、封装。

package 一个包是一个命名空间;它让您处理命名冲突。如果它们位于不同的包中,它基本上可以让您拥有两个名为 Employee 的类。

module大概是指Java库的分布和使用方式——JAR、WAR、EAR。

component可以看成是AWT中GUI的基类(或者Swing中的JComponent),也可以看成是EJB的一种——满足一些需求的POJO(Plain Old Java Object);可能有其他含义,具体取决于上下文。

container 在企业应用程序中,您显然最终会使用一些库和 Java EE; Java EE 库的问题在于它只提供 API 接口而不提供实现。然后,您编写和构建的应用程序被部署到一个 container 服务器中,该服务器附带了 Java EE API 的实现。有两种类型的容器:Web 容器(仅用于实现 Web 特定技术)和完整的 Java EE 容器(实现了 Web 和其他 Java EE 技术 - 命名服务、持久性、事务等)。

service在Java中没有特殊含义。它可能与 web 服务有关,它基本上提供了一种通过网络进行进程间通信的高级方法。

platform在Java中没有特殊含义;它可以被看作是底层开发平台(Windows、Linux)或者随着云的趋势它可以指平台即服务,云提供商提供基础设施和其他基础软件(操作系统、数据库、容器)。

【讨论】:

看来库或框架的开发者可以将container作为一组相关的modules调用? 不是真的;容器可以看作是一个系统,它附带了一些 API(以及其他供应商特定工具)的实现。它通常为应用程序带来事务、同步、持久性和其他功能,让程序员只处理业务逻辑。【参考方案2】:

班级: 它是一个普通的 java 文件,扩展名为 .java,包含所有应用程序所需的对象、方法等,还从其他文件实现或扩展其他对象或方法。

包装: 它是一堆类(.java)文件,由它们的功能或名称分开。所以对命名也有帮助。

模块: 大型应用程序通常由多个部分构建,这些部分彼此之间的连接比与外部的连接更紧密。因此,人们希望让这些部分比外界更多地相互访问。人们可能还希望这些部分在系统中的许多点上重复使用,而不用担心共享数据的同步。这部分在java中称为模块。 WAR、jar等在java语言中称为模块。

组件: 组件是较大程序或构造的可识别部分。通常,一个组件提供一个特定的功能或一组相关的功能。 在面向对象编程和分布式对象技术中,组件是可重用的程序构建块,它可以与分布式网络中同一台或其他计算机中的其他组件组合形成应用程序。 组件在称为容器的上下文中运行。

容器: 组件在称为容器的上下文中运行。容器是基于Java 的Java EE 技术中Web 应用程序的重要组件。它负责维护服务器端的各个组件,包括 Java servlet、Java 服务器页面(JSP)和 Java 服务器面(JSF)。服务的提供和访问方式由合同决定,合同是 Web 应用程序和容器之间的协议。这在 Java EE 框架中提供了相当多的安全性,因为客户端应用程序不知道容器的存在,因此无法直接访问它。因此,Web 容器负责初始化 Web 应用程序组件并在组件上调用客户端请求。

服务: 服务是基于同步和异步应用程序的请求/回复设计范式的分布式计算的演进。应用程序的业务逻辑或单独的功能被模块化并呈现为消费者/客户端应用程序的服务。

框架: 框架对使用它们的代码强加了明确的结构,而库则没有。在软件中,框架是一组可重用的软件程序,构成应用程序的基础。框架帮助程序员快速构建应用程序。早些时候,开发复杂的 Web 应用程序非常困难。现在使用不同类型的框架(如 Struts、Struts 2、Hibernate、JSF、Spring 等)开发此类应用程序非常容易。

平台: 平台是指来自 Sun 的整个 Java 开发和执行环境。 Java 程序由驻留在目标计算机中的运行时引擎(Java 虚拟机)执行。由于 Java 包含自己的操作环境,因此它被称为“平台”,与其他一旦编译后自行运行的编程语言形成鲜明对比。请参阅 Java、Java 2、Java 虚拟机和 Java 运行时环境。

【讨论】:

以上是关于Java世界中的类vs包vs模块vs组件vs容器vs服务vs平台[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

vs如何查看已有模块

C#(VS2019):当两者都使用使用 VS 项目结构的类时,如何将域层与数据层分离

vs2019安装python勾选哪些

VS 2015 中的类库 - 构建跨平台库

vs2005 加载设置模块出错

“从模块导入 *” VS “导入模块”