听dj战歌,就上傲气战歌网!2015年传奇家族玩家最喜爱的家族战歌网
战歌推荐:战歌网 战歌网dj Mc战歌网 DJ战歌网下载 激情战歌-冰雪战歌网 客服Q:350317
新闻搜索:

Java应用开发中代码生成工具的作用

作者:     来源:    发表时间:2011-04-19 17:31

[导读]近来,随着各种代码生成工具的不断涌现(如SpringSource的Spring Roo、Skyway Builder Community Edition 6.3及Blu Age的M2Spring等),人们又将注意力转移到了这些代码生成工具在企业级Java应用开发中所起的作用。

 企业软件热点文章  Java规则引擎 工作原理及应用  MySQL的远程连 接出现错误提示分析

  近来,随着各种代码生成工具的不断涌现(如SpringSource的Spring Roo、Skyway Builder Community Edition 6.3及Blu Age的M2Spring等),人们又将注意力转移到了这些代码生成工具在企业级Java应用开发中所起的作用。

  模型驱动开发(MDD)正获得越来越多的关注,而在一个典型的Java应用中有些内容完全是可以自动生成的。典型的Java Web应用包含数据访问对象(DAO)类、XML to Java映射文件、Spring、Log4J配置文件等,这些内容其实都是能够自动生成的。

  Roo是个双向代码生成框架,可以生成Spring Web应用所需的大多数基础代码。Roo提供了一个命令行shell,同时具有tab completion、上下文感知操作以及命令行提示等特性;它还会以标准的目录格式构建Spring应用,管理构建配置文件、辅助开发者创建领域对象并能为基于REST的Web UI自动生成Web层代码。

  Skyway Builder Community Edition 6.3于上个月发布,它提供了对Spring MVC的支持,可以根据新建或现有的领域模型生成基于Spring的Java CRUD应用。它集成了Spring DSL,还能生成Spring MVC与Spring Web Flow应用代码。Skyway Builder商业版Skyway Builder Enterprise Edition (EE) 6.3集成了IBM Rational Software Architect以将UML转换为Spring应用代码。此外,它还提供了对DWR(JavaScript/JSON)的支持,可以通过Spring services开发RIA应用;还能够通过JET技术定制项目级的代码生成模板。

  IBM的MDD工具(叫做Rational Rhapsody)支持UML2与SysML、需求跟踪、应用代码生成以及针对测试进行设计(DFT)等特性。Rhapsody是个双向的模型驱动解决方案,可以通过需求图、用例图、序列图、活动图以及状态图捕获项目需求。接下来用户就可以根据模型创建对需求的跟踪链接,这种链接能自动提供跟踪、影响分析以及覆盖文档等功能。Rhapsody还支持模型驱动测试(MDT),所谓模型驱动测试,实际上是一种新的方法论,它将MDD的优点引入到了测试过程中。凭借MDT,工程师可以不断对设计进行模拟以及早定位错误,同时还可以自动化单调乏味的测试、进行基于需求的测试以验证设计是否符合需求,它还能通过IBM Rational Rhapsody Automatic Test Generation Add On根据设计自动创建覆盖率测试。

  最近Blu Age凭借其产品M2Spring也加入到了代码生成工具的阵营。M2Spring联合使用了MagicDraw UML与Blu Age Agile Model Transformation进行建模及自动生成基于Spring架构的应用代码。它能够在服务层(业务规则、应用服务及Web Service)、表示层(用户界面、用户角色及安全策略)和持久层(业务对象、DAO实现及DAO finder)上生成Spring Web应用所需的类和其他代码。M2Spring支持多种模型与JEE技术,如UML 2.2、OCL 2.0、XMI 2.1、EMF UML2 2.x XMI、Struts、Spring及Hibernate.。

  还有一些开发工具也支持代码生成,如Project Lombok和Spoon。Lombok具有如下一些特性:自动生成默认的getter/setter方法、自动化的资源管理(通过@Cleanup注解)及注解驱动的异常处理等。

  InfoQ采访了Spring Roo的项目经理Ben Alex以深入了解Java应用开发中代码生成工具所起的作用。Ben Alex说到大多数的开发者每天都在使用代码生成,无论是通过Eclipse的“getters/setters”特性还是从别的地方拷贝过来一段代码,本质都是如此。其主要动机是尽快为特定的需求实现解决方案,避免每次都花费时间研究最佳的解决办法。现代的代码生成工具的动机也是如此,只不过将应用范围扩大了,从简单的“getters/setters”自动生成到提高应用生产力的层次上,比如构建多层的应用。就像是“getters/setters”自动生成一样,现代的代码生成工具也非常容易使用,其生成的代码与我们自己动手编写的差不多,同时我们还可以轻松修改生成的代码。

  在使用代码生成工具之前,开发者需要注意哪些方面呢?

  开发者可以像评估IDE工具那样来评估代码生成工具。要是我的话,我就会问这个软件会提升个人生产力么?学习和使用曲线如何?我所在的组织允许使用这个软件么?一旦使用之后,要是不想用了能行么?软件的维护力度如何?是否有相应的社区呢?软件的质量如何(未解决的缺陷、最终用户的博客以及架构性的资讯信息数量等等)?能否通过插件的方式轻松增加新的功能呢?

  除了像使用IDE时可能会遇到的问题外,你还需要问自己特定于代码生成工具的问题:从长远来看,这个代码生成工具会持续不断地维护我的代码么(比如提供了哪些双向支持)?操作代码生成工具的方式对我的知识、技能与经验有哪些要求?与我经常使用的IDE的协作能力如何?能否与新版本的IDE协作良好,抑或是安装了新版本的代码生成工具或是IDE时会不会导致崩溃的情况发生?生成的代码是否自然、干净、一致且高效呢?其使用方式是否足够灵活以便让我能按照自然的方式工作?其是否完全是自动化的,还是需要我做一些额外的工作?新版本的代码生成工具(或是插件)不会搞乱我的项目吧?

  在大多数应用中,开发者都需要手工编写业务逻辑与验证规则代码,而这些代码都不太容易自动生成,那代码生成工具是如何解决这个问题的呢?

  Hunt与Thomas在The Pragmatic Programmers一书中提到了两类代码生成方式:被动的与主动的。

  所谓被动生成方式就是只运行一次代码生成工具来生成结果,然后手工维护生成的代码。很多开发者都在IDE的帮助下使用过被动生成方式,如“getters/setters”生成器。被动生成方式的输出结果都是由开发者决定的:他们可以通过命令来生成想要的东西。被动生成方式的缺憾在于开发者必须要手工维护生成的代码,因为生成工具不会再对生成好的代码进行更新了。在你修改了生成代码所依赖的某些内容后这个问题就会变得尤为明显,因为此时生成的代码将会出错,而用户通常都会删掉代码并重新运行生成工具。

数据统计中!!

最新评论共有  位网友发表了评论
发表评论(评论内容:请文明参与评论,禁止谩骂攻击!)
不能超过250字节,请自觉遵守互联网相关政策法规.
昵称:    发表评论 (Ctrl+Enter快速回复)

关于本站 | 合作加盟 | 合作说明 | 免责声明 | 广告服务 | 网站地图

健康游戏忠告:抵制不良游戏 拒绝盗版游戏 注意自我保护 谨防受骗上当 适度游戏益脑 沉迷游戏伤身 合理安排时间 享受健康生活

如有意见和建议,请惠赐E-mail至350317@qq.com 联系QQ:350317

Copyright © 2010-2013 Www.27zG.CoM
苏ICP备11049833号