Java EE 5.0能取代Struts,Spring和Hibernate吗?

Java EE 5.0能取代Struts,Spring和Hibernate吗?
 
作者 : Allen文章来源 : www.operamasks.org

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>

         20065 月, Java EE 5 规范正式发布。 Java EE 5 的出现,可能是 J2EE 诞生以来比较重量级的一次震撼 ,规范发布至今已有半年之多,业界对 Java EE 5 的关注也变得越来越热烈, google 一下“ java ee ”关键字,可以得到 500 多万条相关纪录,而从 Sun 网站上进行检索( http://java.sun.com/javaee/overview/compatibility.jsp ),也可以看到专业厂商已经迅速跟进,除 Sun 公司本身外,包括全球闻名的 SAP 、金蝶 Apusic 等另三家,已经推出全面支持 Java EE 5 规范的应用服务器产品。

 

 

Java EE 5 包含 JSF 1.2EJB 3.0JAX-WS 2.0 等新功能,试图解决 Java 企业级应用开发的简便性、灵活性及易用性问题。在 Java EE 5 出现之前,很多开源框架( Open Source Framework )如雨后春笋般涌现,尝试从某种角度或某些方面去解决“委员会”规范所未能顾及的应用开发问题,如 Web 开发中的关注分离问题( MVC )、业务模型实现问题( ORM )等等。很多开源 framework 都非常出名,为人们喜爱并广泛使用,如 StrutsSpringHibernate 等,这些“江湖派”作品曾经一定程度上成为 Java 企业级应用开发事实上的标准。 Java EE 5 的出现,是否会改变这种状况?或者说,人们在重新选择应用框架时,是否会优先考虑全新的 Java EE 5 技术?带着这种疑问,笔者试图进行简单的技术比较,并辅于肤浅的评论,希望能够抛砖引玉、借花献佛,以娱大众。

 

Struts vs. JSF

 

 

Struts

JSF

MVC

支持

支持

POJO

 

支持

页面流( Page Flow

支持

支持

UI 组件( UI Component

 

支持

 

MVC 是模型( Model )、视图( View )、控制( Controller )分层的结构,通过分层来实现关注分离,减少传统开发中常见并重复的工作。 StrutsJSF 均支持 MVCStrutsMVC 支持的核心是 Controller ,通过 Controller (一个共同的入口 Servlet )获得 HTTP 请求,将 HTTP 参数传入 ActionForm ,然后将 ActionForm 传给 Action 类 。 StrutsHTTP 请求只有一个事件处理 handler ,当请求过来时,由相应 Action 返回结果给前端 Controller ,并据此选择如何进行导航。 JSF 一般也采用一个前端 Controller (有些商用 JSF 能够智能识别 JSF 请求,无需额外的 controller ),不过在 Controller 中做的工作跟 Struts Controller 截然不同,它负责触发 JSF 页面组件中的事件,用 Render 工具生成组件的展现,绑定来自 Model 的数据到组件等。可以看到, JSF 在在控制层更灵活,在视图层支持 Render 工具的变换而生成灵活的展现,在模型层实现与框架的彻底分离,因而具有更高的灵活性。

 

 

POJO 是无格式 Java 对象( Plain Old Java Object )。 POJOAOP 结合被广泛用于快速业务模型。 Struts 设计的初衷主要是解决视图和控制问题,并无过多关注模型的灵活性问题。 Struts 中的 ActionForm 模型必须继承自框架类,虽然可以通过定制类库提供一些帮助类实现模型与框架无关,但本质上还是紧耦合于 JSP- and HTTP-centric 方法 。 JSF 提供了对 POJO 天然的良好支持,并支持通过 RAD 工具实现快速的业务模型生成,从而具有更高的生产力。

 

页面导航的最大意义是帮助实现页面的可视化开发,在 UI 界面上快速定义页面流向。页面导航分静态导航和动态导航两种,静态导航是页面直接流向另一页面,动态导航是由特定动作或逻辑决定页面的流向。 StrutsJSF 均支持静态和动态页面导航。不过 Struts 中的导航规则是绑定到 Action 中的,那意味着可能需要对同一页面中不同的 Action 做重复性的导航规则制定,而 JSF 导航可以跟 Action 无关,可以在页面中不同组件的不同 Action 间共享相同的导航规则。

 

Struts 本身并不提供 UI 组件机制,而 JSF 则提供了完整的 UI 组件机制。通过 UI 组件的定制和重用,能够极大地简化开发,提升用户体验。商业化的产品则往往更进一步,提供强大易用的开发工具,实现 drag-and-drop 方式所见即所得的 Web UI 开发。

 

Spring vs. EJB 3.0

 

 

 

Spring

EJB3

标准( Standard

 

是, Java EE 5 标准组成部分

持久( Persistence

JDBC, Hibernate, JDO, iBatis and JPAongoing spring 2.0

JPA

声明式服务( Declarative Services

支持

支持

依赖注入( Dependency Injection

支持

支持

集群( Cluster

 

支持

 

Spring 框架是一个开源项目,并不是一个标准的东西。 Spring 自己定义了一套 XML 配置文件大纲以及程序接口,从长远考虑,有很大的不确定性。 Spring 的主要开发者来自 Interface21 公司(这是帮我非常敬重的人), Interface21 靠相关咨询和服务维持,作为一个商业团体其利益取向将可以完全左右 Spring 未来的方向。相比 EJB 3 出身名门正派的标准血统并有众多主流商业厂商支持, Spring 的非标准性将可能带来极大的风险。

 

Spring 框架本身不带持久实现,但它支持 JDBC, Hibernate, JDO iBatis 等持久化框架。 Spring 通过使用不同的 DAOHelper 类以利用 JDBCHibernateiBatisJDO ,所以并没有实现和最终服务提供者的隔离。简单来说,就是需要重构代码才能实现持久化框架的更换。 EJB 3.0 的持久集成在应用服务中,通过 JPA ,可以在底层更换持久实现,如将 Hibernate 更换为 ToplinkEJB 3.0 的持久具有更大的灵活性,并有利于厂商进行性能优化和扩展。

 

SpringEJB3.0 都为企业应用提供运行时服务,(如:事务、安全、日志消息、配置服务)。由于这些服务都不是直接与应用的业务逻辑相关联,所以都不是由应用来自行管理。 EJB3.0 使用 Java 注释来配置声明式服务, Spring 使用 XML 配置文件。在大多数情况下, EJB3.0 的注释声明显得更为简单和优雅。 Spring 使用 XML 来定义属性并配置声明式服务的结果将是一个冗长而不稳定的配置文件。

 

依赖注入模式( DI )是在应用中实现松散耦合的最佳实践。 SpringEJB3.0 都支持 DI 模式,但他们有着深刻的不同。 Spring 支持通用的(但复杂的)基于 XML 配置文件的依赖注入 APIEJB3.0 支持注入大多数服务对象(如 EJB 和上下文对象)和通过简单注释声明的 JNDI 对象。

 

EJB 3.0 完全支持集群。部署在服务集群中的 EJB3.0 应用将自动获得负载均衡、分布缓存、状态复制等功能。底层的集群服务隐藏在 EJB3.0 编程接口后面,屏蔽了所有的复杂性。 Spring 没有简单的利用集群的方法。

 

Hibernate vs. EJB 3.0

 

 

HibernateEJB 3.0 其实并没有很好的可比性,因 Hibernate 仅关注 ORM ,而     EJB 3.0 更多则更多表现为一种组件框架,其中包含 ORM 部分而已。 EJB 3.0 在设计过程中,曾经得益于 Hibernate 的作者 Gavin King ,据说 EJB 3.0 EntityBean 的设计理念完全来自于 Hibernate 。只需用将 EJB 3.0 EntityBean API

基于51单片机,实现对直流电机的调速、测速以及正反转控制。项目包含完整的仿真文件、源程序、原理图PCB设计文件,适合学习实践51单片机在电机控制方面的应用。 功能特点 调速控制:通过按键调整PWM占空比,实现电机的速度调节。 测速功能:采用霍尔传感器非接触式测速,实时显示电机转速。 正反转控制:通过按键切换电机的正转反转状态。 LCD显示:使用LCD1602液晶显示屏,显示当前的转速PWM占空比。 硬件组成 主控制器:STC89C51/52单片机(与AT89S51/52、AT89C51/52通用)。 测速传感器:霍尔传感器,用于非接触式测速。 显示模块:LCD1602液晶显示屏,显示转速占空比。 电机驱动:采用双H桥电路,控制电机的正反转调速。 软件设计 编程语言:C语言。 开发环境:Keil uVision。 仿真工具:Proteus。 使用说明 液晶屏显示: 第一行显示电机转速(单位:转/分)。 第二行显示PWM占空比(0~100%)。 按键功能: 1键:加速键,短按占空比加1,长按连续加。 2键:减速键,短按占空比减1,长按连续减。 3键:反转切换键,按下后电机反转。 4键:正转切换键,按下后电机正转。 5键:开始暂停键,按一下开始,再按一下暂停。 注意事项 磁铁霍尔元件的距离应保持在2mm左右,过近可能会在电机转动时碰到霍尔元件,过远则可能导致霍尔元件无法检测到磁铁。 资源文件 仿真文件:Proteus仿真文件,用于模拟电机控制系统的运行。 源程序:Keil uVision项目文件,包含完整的C语言源代码。 原理图:电路设计原理图,详细展示了各模块的连接方式。 PCB设计:PCB布局文件,可用于实际电路板的制作。
【四旋翼无人机】具备螺旋桨倾斜机构的全驱动四旋翼无人机:建模与控制研究(Matlab代码、Simulink仿真实现)内容概要:本文围绕具备螺旋桨倾斜机构的全驱动四旋翼无人机展开研究,重点进行了系统建模与控制策略的设计与仿真验证。通过引入螺旋桨倾斜机构,该无人机能够实现全向力矢量控制,从而具备更强的姿态调节能力六自由度全驱动特性,克服传统四旋翼欠驱动限制。研究内容涵盖动力学建模、控制系统设计(如PID、MPC等)、Matlab/Simulink环境下的仿真验证,并可能涉及轨迹跟踪、抗干扰能力及稳定性分析,旨在提升无人机在复杂环境下的机动性与控制精度。; 适合人群:具备一定控制理论基础Matlab/Simulink仿真能力的研究生、科研人员及从事无人机系统开发的工程师,尤其适合研究先进无人机控制算法的技术人员。; 使用场景及目标:①深入理解全驱动四旋翼无人机的动力学建模方法;②掌握基于Matlab/Simulink的无人机控制系统设计与仿真流程;③复现硕士论文级别的研究成果,为科研项目或学术论文提供技术支持与参考。; 阅读建议:建议结合提供的Matlab代码与Simulink模型进行实践操作,重点关注建模推导过程与控制器参数调优,同时可扩展研究不同控制算法的性能对比,以深化对全驱动系统控制机制的理解。
标题中的"EthernetIP-master.zip"压缩文档涉及工业自动化领域的以太网通信协议EtherNet/IP。该协议由罗克韦尔自动化公司基于TCP/IP技术架构开发,已广泛应用于ControlLogix系列控制设备。该压缩包内可能封装了协议实现代码、技术文档或测试工具等核心组件。 根据描述信息判断,该资源主要用于验证EtherNet/IP通信功能,可能包含测试用例、参数配置模板及故障诊断方案。标签系统通过多种拼写形式强化了协议主题标识,其中"swimo6q"字段需结合具体应用场景才能准确定义其技术含义。 从文件结构分析,该压缩包采用主分支命名规范,符合开源项目管理的基本特征。解压后预期可获取以下技术资料: 1. 项目说明文档:阐述开发目标、环境配置要求及授权条款 2. 核心算法源码:采用工业级编程语言实现的通信协议栈 3. 参数配置文件:预设网络地址、通信端口等连接参数 4. 自动化测试套件:包含协议一致性验证性能基准测试 5. 技术参考手册:详细说明API接口规范与集成方法 6. 应用示范程序:展示设备数据交换的标准流程 7. 工程构建脚本:支持跨平台编译部署流程 8. 法律声明文件:明确知识产权归属及使用限制 该测试平台可用于构建协议仿真环境,验证工业控制器与现场设备间的数据交互可靠性。在正式部署前开展此类测试,能够有效识别系统兼容性问题,提升工程实施质量。建议用户在解压文件后优先查阅许可协议,严格遵循技术文档的操作指引,同时需具备EtherNet/IP协议栈的基础知识以深入理解通信机制。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值