事实上“轻量级”与“重量级”并没有确切的定义。轻重量级之分应当考虑如下几个方面:
加载的资源
Spring相对于EJB是轻量级的,但这就好像说大象比鲸轻。
如果你想要运行一个Java EE应用程序,你不能够简单地创建一个应用并直接运行它本身。需要一个JavaEE服务器来运行应用,例如Glassfish,WebLogic或WebSphere。多数应用服务器都是非常巨大并且复杂的,并不容易安装和配置。
EJB应用启动时要消耗大量的资源,内存、CPU等,把所有的服务都加载进来;Spring则是可定制服务,需要什么加载什么。
侵入性(或曰框架依赖性,耦合性)
重量级框架(如EJB2.0和Struts1.2)侵入性较高。它强制开发者写一些与框架绑定的类。这使得这些类很难被测试。
Spring将侵入性降到最低,它允许使用POJO进行开发。Spring并不强制实现Spring API接口或扩展Spring API类。这使得这些类方便测试。这使得把类迁移到其他轻量级容器更加容易。
开发的方便程度
如上条所述,使用重量级框架要写一些框架绑定的类,部署、运行及测试过程都较为复杂,开发起来并不方便。而轻量级框架反之。
解决问题的侧重点不同:
轻量级框架侧重于减小开发的复杂度,相应它的处理能力较弱(事务功能弱,不具备分布式处理能力),适用于开发中小型企业应用。 重量级框架则强调高可伸缩性,适合于开发大型企业应用。
轻量级框架的特点:
一般是非侵入性的、依赖的东西非常少,占用资源非常少,部署简单,比较容易使用。
为何说Spring是轻量级框架:
- Spring以集中的、自动化的方式进行应用程序对象创建和装配,管理对象生命周期,组合成复杂的应用程序。
- Spring提供了不同的模块,基于需求可以灵活选择。Spring jar的大小通常在几MB。
- 相比较EJB,Spring需要写更少的代码和更少的配置。使得开发人员能够更关注业务逻辑。
- Spring容器是非侵入性的,完全采用POJO进行开发,方便测试。
- Spring方便与其他框架与第三方类库无缝集成。
Spring与其他基于POJO的容器相比,例如Guice和Plexus,仍然称得上是“重量级”。因为完整的Spring技术栈包含了POJO之上的层次,它的MVC框架需要Servlets基础设施。
Spring相比EJB2.x确实是轻量级,最主要的卖点是POJO的使用。
为何说EJB是重量级框架?
首先这是Rod Johnson说的,Spring狂热者奉之为圭臬的论断。
2004年以前EJB2.x确实是重量级,它需要EJB容器来运行,需要加载较多的资源,代码侵入性较高–需要实现特定的EJB接口,相对来说开发并不方便。
总结
轻重量级是相对的,主要从加载资源、代码侵入性和开发便捷性等方面去考虑和比较。类似地,使用volatile变量可以用来确保变量的更新操作被同步到其他线程,这种同步机制相对于同步容器就是轻量级的(当然更具可伸缩性和实用性的是并发容器而非上述二者);而jetty相对于tomcat而言,由于其加载资源更少,也可以称之为轻量级的。
相关推荐
轻量级框架和重量级框架的区别在于解决问题的侧重点不同。
轻量级框架是指相对重量级框架来说,结构简单、易用、可扩展性好的自动化测试框架。它们通常基于一些基本的设计模式,如Page Object Model、Data Driven等,使得测试代码结构清晰,易于维护和扩展。 二、Page ...
标题:“Spring轻量级与EJB重量级容器的比较” 描述:“我自己做的第一个文档” 标签:“容器” 部分内容:本文档旨在深入探讨Spring轻量级容器与EJB重量级容器的区别,通过对这两个概念的剖析,帮助读者理解它们...
Vue.js是一套构建用户界面的轻量级MVVM框架,与其他重量级框架不同的是, Vue.js 的核心库只关注视图层,并且非常容易学习,很容易与其它前端技术或已有的项目整合。 本系课程,主要分为两部分完成。第一部分:掌握...
2. **性能优化**:由于组件精简,轻量级框架往往比重量级框架加载更快,对于小型到中型项目,能提供更好的性能。 3. **易学易用**:它们的API设计简单,文档清晰,使得新开发者能够快速上手。 4. **灵活性**:轻量...
3. **MVC模式**:大部分轻量级框架支持Model-View-Controller(MVC)设计模式,分离业务逻辑、数据处理与用户界面,提高了代码组织的清晰度。 4. **依赖注入**:通过依赖注入(Dependency Injection,DI),框架能...
Spring Boot是目前Java Web开发中最流行的轻量级框架之一,它简化了Spring配置,提供了“开箱即用”的特性。源码中可能包含了Spring Boot的配置、控制器、服务层和数据访问层的实现。通过对这些代码的学习,我们可以...
4. **基于Spring的轻量级框架的设计与实现.pdf**: 可能详细介绍了Spring框架的轻量级特性,以及如何利用Spring构建自定义的轻量级框架,包括模块化设计和可扩展性设计。 5. **基于轻量级构架J2EE的考试系统的设计...
在Java Web开发领域,"轻量级"一词通常指的是不依赖大型、重量级的服务器端框架,而是采用更加灵活、高效和小巧的工具集来构建应用程序。这样的开发方式有助于提高开发效率,减少资源消耗,并易于维护。本主题聚焦于...
**标题:“HBase轻量级框架Parrot”** 在大数据处理领域,Apache HBase是一个流行的分布式、面向列的NoSQL数据库,它构建于Hadoop之上,提供了实时的随机读写能力。然而,对于某些特定场景,HBase的使用可能过于...
首先,轻量级框架的概念是相对于重量级的Java EE应用服务器而言的。这些框架如Spring MVC、Struts 2、Play Framework和Spark Java等,旨在减少开发复杂性,降低内存占用,提高应用程序的启动速度和整体性能。 在...
### 基于Struts_Hibernate_Spring轻量级框架的Web应用开发 #### 引言 随着互联网技术的快速发展,Web应用系统的需求日益增长,同时也对系统的性能、可维护性和扩展性提出了更高的要求。传统的“重量级”技术(如...
- **Spring Framework**:提供了依赖注入(DI)、面向切面编程(AOP)、数据访问/集成等功能,是当前最流行的轻量级框架之一。 - **Struts2**:一个用于构建Web应用的MVC框架,简化了Web应用的开发过程。 - **...
此外,轻量级框架的设计还可能包括其他优化措施,如使用轻量级容器替代JBoss,减少系统资源的占用,以及优化数据库交互,提高数据处理效率。这样的框架设计有利于降低整体的运维成本,提高系统的响应速度,同时也为...
轻量级框架因其低开销、快速开发和易于维护的特点,已经成为现代企业级开发的重要选择。在本书中,作者主要探讨了三个核心的技术:JSP(JavaServer Pages)、Struts和Spring。 JSP是Java EE平台中的一个关键组件,...
轻量级MVC框架指的是相比于Spring等重量级框架而言,更为简洁、快速、低耦合的框架。这些框架通常体积小,启动速度快,适合小型项目或快速开发。本实例可能包含的是一个轻量级的Java MVC框架,如Struts、Play ...
【基于轻量级框架SpringBoot的家教APP产品设计与实现】 本文主要介绍了一款针对Android平台设计的家教APP,该APP运用了轻量级的SpringBoot微服务框架,旨在提升家教服务的效率和便利性。SpringBoot以其简洁、高效的...
在Java EE(Enterprise Edition)开发中,"轻量级"通常指的是使用非重量级的容器或者框架,如Spring、Hibernate等,来替代传统的EJB(Enterprise JavaBeans),以降低系统的复杂性和提高开发效率。这一版本的实战...
轻量级Java EE则是相对于传统的重量级Java EE框架而言,强调更小的体积、更高的效率和更简单的部署。 在轻量级Java EE领域,开发者通常会选用如Spring框架、Hibernate ORM、JSF(JavaServer Faces)、CDI(Contexts...
在第一章中,作者首先定义了轻量级工作流引擎的概念,强调其相对于重量级工作流引擎的简洁性和高效性。接着,文章对工作流管理系统进行了分类,包括面向文档和面向过程的系统,结构化与即席的系统,基于邮件和基于...