2024-09-27 01:40:30
Web框架是人们在使用某种语言编写Web应用服务端时关于架构的最佳实践
有些Web框架是从实际的Web项目抽取出来的也就是说做一个具体的应用项目时采取的架构比较理想就把这部分和领域无关而仅和Web的请求和响应处理有关的设计拿出来形成一个基础在开发别的应用项目的时候则可以从这基础做起让开发者更关注领域问题而不是Web的请求和响应的控制
也有些Web框架是直接设计出来的很多Web框架在设计的时候也都借鉴了别的框架吸取优点修改不足并根据自己的框架的定位在特定方面有自己的发挥形成了自己的特点比如有的web框架追求的是松耦合性层次结构之间都不密切绑定有的Web框架则追求敏捷性强调约定而不是配置
Java的Web框架虽然各不相同但基本也都是遵循特定的路数的使用Servlet或者Filter拦截请求使用MVC的思想设计架构使用约定XML或Annotation实现配置运用Java面向对象的特点面向抽象实现请求和响应的流程支持JspFreemarkerVelocity等视图
JSF
优点
JavaEE标准这意味着有很大的市场需求和更多的工作机会
上手快速并且相对容易
有大量可用的组件库
缺点
大量的JSP标签
对REST和安全支持不好
没有一个统一的实现既有SUN的实现又有Apache的实现——MyFaces
国内的OperaMasks还支持AJAX以及有开发工具支持
SpringMVC
优点
对覆盖绑定(overridingbinding)验证(validation)等提供生命周期管理
与许多表示层技术/框架无缝集成JSP/JSTLTilesVelocityFreeMarkerExcelXSLPDF等
便于测试——归功于IoC
缺点
大量的XML配置文件
太过灵活——没有公共的父控制器
没有内置的Ajax支持
Stripes
优点
不需要书写XML配置文件
良好的学习文档
社区成员很热心
缺点
社区比较小
不如其他的项目活跃
ActionBean里面的URL是硬编码的
Struts
优点
架构简单——易于扩展
标记库很容易利用FreeMarker或者Velocity来定制
基于控制器或者基于页面的导航
缺点
文档组织得很差
对新特征过分关注
通过Google搜索到的大多是Strutsx的文档
Tapestry
优点
一旦学会它将极大地提高生产率
HTML模板——对页面设计师非常有利
每出一个新版本都会有大量的创新
缺点
文档过于概念性不够实用
学习曲线陡峭
发行周期长——每年都有较大的升级
Wicket
优点
对Java开发者有利(不是Web开发者)
页面和显示绑定紧密
社区活跃——有来自创建者的支持
缺点
HTML模板和Java代码紧挨着
需要对OO有较好的理解
Wicket逻辑——什么都用Java搞定
在Java的Web框架中我使用过StrutsStruts试用过StripesWicket了解过JSFSpringMVC以我使用的经验我觉得看一个JavaWeb框架应看看下面几个方面
设计理念
一个框架设计出来应该有一个基本的思路它为什么要要被设计出来?有的框架的目标就是提高效率有的框架的目标的给用户充分的选择有的框架的目标是充分了解实际需求给用户一个尽量合理的默认选择有的框架是要给使用者开发桌面程序的感觉应该说一个好的框架应该是实现了预期目标体现出了自己的设计理念的
设计的合理性
设计的合理性表现在框架在一些关键问题上的处理比如灵活性和敏捷性之间的权衡硬编码和文本配置之间的权衡灵活性指的是可以适应用户多样的需求很特殊的要求也能得到支持有的框架的实现基于太多的约定使得用户只能遵循而敏捷性指的是用户在解决绝大多数常规问题的时候能尽量少做工作提高效率框架设计者只能在这两者见达到一个平衡点权衡的怎么样就很见水平了硬编码和文本配置之间的权衡也很有意思文本配置的意义在于Java是一个编译语言强调代码的封闭讲究扩展而不是修改这种情况下文本配置信息可以很方便的在不修改程序的情况下改变程序行为但是随着一些灵活的脚本语言实现的Web框架的出现人们发现在这样的框架中脚本语言即做程序编码语言也做配置语言还做视图上的标记语言这使我们对Java实现的框架有了一番新的审视既然配置文件并没有消除对程序的修改为什么不能在应编码上下下功夫呢?
设计的平衡性
设计的平衡性指的是框架在设计流程中各阶段各层次的实现方式时所达到的上述权衡(灵活性和敏捷性之间的权衡等)应该是具有一致的水平一个在控制上过分灵活而视图上具有非常大限制的框架是不能算做一个好的框架的
框架真的解放了开发者吗
框架的目的是让开发者把更多的精力放在领域问题而非Web的请求和响应的处理问题上而事实上框架都做到这一点了吗?不可否认框架的使用提高代码的可维护性但是框架在解放开发者这点上就未必了有时还给开发者带来了额外的负担事实上直接使用Servlet只要维持好代码风格一样可以很有效率当然直接使用Servlet的灵活性就不用说了
在我接触的Web框架中我最推崇的是Struts设计优雅偏重灵活也基本不造成额外的负担当然这些评价是和我参与的项目的规模有关的其他规模的项目Struts就未必合适了我希望Struts能在下面几个方面有些改善
在提供文本配置方式的基础上给一个约定配置的方式让开发者在大多数情况下可以不配置
配置也支持硬编码因为有时候维护可修改的硬编码是很有效率的
lishixinzhi/Article/program/Java/hx/201311/26313
java里面那么多框架,选择哪个啊这里有一些步骤可以帮助你选择正确的Java框架:
1.确定你的项目需求:在选择Java框架之前,需要确定项目的具体需求,比如要构建的应用的类型、需要的特性、可伸缩性、应用的性能等。
2.评估可用的框架:一旦你确定了项目需求,你就可以开始根据它们的特性、性能、可伸缩性、易用性、社区支持和文档来评估可用的Java框架。
3.考虑一下学习曲线:考虑框架的学习曲线,指的是你的团队成员学习和有效使用框架所需的时间和精力。有些框架比其他框架更复杂,因此选择一个与团队成员的技能水平相匹配的框架非常重要。
4.看看社区支持:社区支持非常重要,因为它提供了对论坛、教程和文档等资源的访问。具有强大社区支持的框架可以帮助你快速解决问题并获得帮助。
5.评估生态系统:Java框架生态系统包括可以帮助你构建应用程序的库、工具和资源。一个具有健壮生态系统的框架可以节省你的时间和精力,并且可以帮助你避免重新发明轮子。
6.考虑长期可行性:当选择一个Java框架时,考虑它的长期生存能力是很重要的。确保框架有一个活跃的社区,并定期更新,以避免框架过时和不受支持的风险。
java有什么常用开源的框架?java常用开源框架如下:\x0d\x0a1.SpringFramework【Java开源JEE框架】\x0d\x0a\x0d\x0aSpring是一个解决了许多在J2EE开发中常见的问题的强大框架。Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的InversionofControl容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。\x0d\x0a\x0d\x0a2.WebWork【Java开源Web开发框架】\x0d\x0a\x0d\x0aWebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EEWeb框架。\x0d\x0a\x0d\x0a3.Struts【Java开源Web开发框架】\x0d\x0a\x0d\x0aStruts是一个基于SunJ2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Struts把Servlet、JSP、自定义标签和信息资源(messageresources)整合到一个统一的框架中\x0d\x0a\x0d\x0a4.Hibernate【Java开源持久层框架】\x0d\x0a\x0d\x0aHibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合\x0d\x0a\x0d\x0a5.Quartz【Java开源调度框架】\x0d\x0a\x0d\x0aQuartz是OpenSymphony开源组织在Jobscheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。\x0d\x0a\x0d\x0a6.Velocity【Java开源模板引擎】\x0d\x0a\x0d\x0aVelocity是一个基于java的模板引擎(templateengine)。它允许任何人仅仅简单的使用模板语言(templatelanguage)来引用由java代码定义的对象。当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。\x0d\x0a\x0d\x0a7.IBATIS【Java开源持久层框架】\x0d\x0a\x0d\x0a使用ibatis提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象,这一层与通过Hibernate实现ORM而言基本一致,而对于具体的数据操作,Hibernate会自动生成SQL语句,而ibatis则要求开发者编写具体的SQL语句。相对Hibernate等“全自动”ORM机制而言,ibatis以SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。作为“全自动”ORM实现的一种有益补充,ibatis的出现显得别具意义。
北大青鸟设计培训:Javaweb现在流行用什么框架?说到java,很多人头都大成了两个,因为Java框架很多。
但是比较好的方面是,这些框架都能解决特定的问题,提高开发效率、简化我们的代码复杂度,现在除了很多大家通用的一些主流框架外,很多公司针对自己的业务会自定义一些公司内部的框架,当然作为学习者java课程告诉大家首先要清楚Javaweb都有哪些框架需要学习。
回答这个问题首先要看我们的项目规模,对于”体量”较小的单应用项目,和需要处理海量数据、高并发的分布式项目所学习使用的框架还是不同的。
ORM型框架,很多Javaweb程序都需要使用关系数据库来进行数据的持久化,所以对于这种需要进行数据库操作的框架,也就是对JDBC进行封装的ORM框架是需要学习的,目前比较流行的是基于SQL的mybatis框架,这是一个轻量级的ORM框架,学习使用起来比较容易上手,同类型的还有Hibernate框架。
MVC型框架,MVC把程序从逻辑上分为视图层、控制层、模型层,各层各司其职,之间是相互调用的关系而不是相互依赖的关系,这种模式能很好的适应需求的变化及软件的升级变更。
目前应用较多的MVC框架是springMVC框架,这个框架有清晰的角色划分,有强大而直接的配置方式,高效的绑定和验证等很多优势。
较早的Struts2框架也是MVC框架。
Spring框架,其实Java的从业者很多都绕不开Spring,Spring家族有很多“工具”,编程思想从面相过程到面相对象是一个巨大的进步,然而随着程序越来越复杂,对象越来越多,高效的“管理”及应用这些对象变得越来越重要,Spring的IoC就是把对象的创建、“管理”交由Spring容器来进行,来实现控制反转,同时提供了各种注入值(DI)的方式,大大提高和简化了我们的工作,这就是javaweb需要学习的spring的IoC/DI;我们程序的业务比较复杂时,除了要完成核心功能外,还需要完成注入异常处理、日志记录、事务处理等常规功能,这些常规的操作比较耗费精力,springAOP(面向切面编程)就是解决这个问题的。
Javaweb需要学习一些前端框架,尤其是问题中提到的已经写好了数据接口,或者是已经有了简单的后台,前端框架jQuery是一定要学习的,如果项目基于效率考虑,需要前后端分离,可以学习vue等框架。