事实上“轻量级”与“重量级”并没有确切的定义。轻重量级之分应当考虑如下几个方面:
加载的资源
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而言,由于其加载资源更少,也可以称之为轻量级的。
相关推荐
轻量级框架和重量级框架的区别在于解决问题的侧重点不同。
Vue.js是一套构建用户界面的轻量级MVVM框架,与其他重量级框架不同的是, Vue.js 的核心库只关注视图层,并且非常容易学习,很容易与其它前端技术或已有的项目整合。 本系课程,主要分为两部分完成。第一部分:掌握...
轻量级框架是相对于重量级框架而言的一种程序设计模式。与重量级框架相比,解决问题的侧重点是不同的。 采用轻量框架一方面因为尽可能的采用基于POJOs的方法进行开发,使应用不依赖于任何容器,这可以提高开发调试...
LongUI 0.2.2 轻量级C ++ GUI库LongUI中的功能重量轻LongUI的主要目标静态链接框架,helloworld bin文件大小小于200kb 为此,LongUI中没有c ++异常XML用户界面语言与Mozilla的XUL部分兼容(XML部分) 部分兼容CSS...
轻量级的深度学习框架。 •• • 描述 经过验证,nanograd不是俄罗斯的城市。 但是,它是一个类似于PyTorch的轻量级深度学习框架。 使用它只需很少的样板代码即可实现所需的任何DL算法。 本质上,Nanograd是一个...
1、其中Yaf 是PHP国内第一人写的纯C框架, 核心在于路由部分与类的加载功能, 可惜没有数据库ORM操作,极轻量级。 2、phalcon是国外非常火的一个框架,也是一个纯C框架,非常重量级,过于臃肿,文档不太完善。 3、...
它与其他重量级框架不同的是AKjs采用了按需引入插件功能以及所有的UI布局中可以让用户自行发挥写页面,因为它提供的CSS库模块化的很细分,让开发者们可以轻松的解决前端的烦恼。注:开发正式项目的时候不要用demo....
它是一个全新的通信平台,因为微软没有选择在重量级框架上通过扩展实现轻量级通信。本书宗旨是清晰呈现消息处理管道,以使读者完全理解从接收请求到响应回复的全流程,并彻底掌握路由、HttpController激活、Action...
4、canphp跟zend框架相比有哪些优势答:canphp是轻量级框架,zend是重量级框架,开发企业网站,或其他小型项目,canphp更合适。 5、canphp怎么样,好不好用?答:canphp很简单,很自由,功能也很实用,里面的类库都...
4、canphp跟zend框架相比有哪些优势 答:canphp是轻量级框架,zend是重量级框架,开发企业网站,或其他小型项目,canphp更合适。 5、canphp怎么样,好不好用? 答:canphp很简单,很自由,功能也很实用,里面的类库...
采用Html+Css+JavaScript,wow脚本库,含一定量的javaScript,无重量级jquery库;未采用框架开发,初级人员可放心使用;可作商品展现示范类网站,适用于绝大部分内容的资源展现 ; 适用人群:初级阶段后期的前端人员...
AKjs前端框架是Andrew.Kim和他的团队...它与其他重量级框架不同的是AKjs采用了按需引入插件功能以及所有的UI布局中可以让用户自行发挥写页面,因为它提供的CSS库模块化的很细分,让开发者们可以轻松的解决前端的烦恼。
“它类似于服务器端Blazor,但重量更轻且易于安装。例如,尽管任何类型的Blazor都需要完整的SDK,但Lara只是NuGet软件包。” 样品申请 using Integrative . Lara ; using System ; using System . Threading . ...
它与其他重量级框架不同的是AKjs采用了按需引入插件功能以及所有的UI布局中可以让用户自行发挥写页面,因为它提供CSS库模块化的很细分,让开发者们可以轻松的解决前端的烦恼。主要目录和主要文件说明
AF框架什么是AF框架AF Framework是一个轻量级PHP框架,可让您以自己喜欢的任何方式构建任何东西。 现代PHP框架通常很胖,并且太大而无法放入单个存储库中,而AF Framework却不是这样。 AF的设计极简。 仅存在,仅此...
夏季是重量轻的Python 3应用程序框架,可支持通用应用程序开发。 它为业务对象管理,ORM(映射,声明性事务),LDAP和本地化提供支持。 受到著名的Java Spring应用程序框架的启发。 从0.5.2开始,需要Python 3。
第1章 移动互联网时代的WEB技术 ...第8章 轻量级框架JQUERY MOBILE初探 第9章 重量级富框架SENCHA TOUCH入门 第10章 跨平台的PHONEGAP应用介绍 第11章 构建基于HTML5的生活轨迹WEB APP 第12章 进阶之路
Vue日期选择 基于 Vue 的轻量级和移动友好的日期时间选择器。 Vue 日期选择强调所有屏幕尺寸上的性能、优雅和可用的 UI 以及配置的简单性。 不依赖于 css 框架或日期库。 重量小于 5KB。 文档和演示 。
Spring是一个轻量级的DI/IoC和AOP容器框架。存在的目的是用于构建轻量级的J2EE应用。 轻量级:应用大小和应用开支,包括应用方式 依赖注入DI/IoC控制反转:提供松耦合的一种实现技术 AOP面向切面编程:(可以在不...