写点什么

Spring Roo 1.0 M1 发布了

  • 2009-06-08
  • 本文字数:2853 字

    阅读完需:约 9 分钟

Spring Roo 是一个用 Java 开发 Spring 应用的双向(round-tripping)代码生成工具,其最新版提供了 Tomcat 、JMS 和 Selenium 支持。SpringSource 开发团队上周发布了 Roo 1.0 M1 版。

Spring Roo 框架提供了一个带有 tab 命令补全、能感知上下文操作及命令提示特性的命令行 shell。它以标准的目录格式构建 Java 应用程序,管理构建配置文件,帮助开发者创建 domain 对象,集成了流行的持久化技术,并为简单的基于 REST 的 Web 用户界面提供 Web 层自动生成。它还提供了动态查找方法并能自动产生 JUnit 集成测试。

Roo 的项目领导 Ben Alex 最近发表了一篇关于这一新版本的博文,其中带一个例子应用,解释了如何安装框架并用Roo 创建Spring 应用。SpringSource 的创始人 Rod Johnson 也写了一篇关于 Roo 框架背后动机的介绍。InfoQ 就这一新框架及其如何帮助进行Java 应用程序开发等问题采访了Ben Alex。

ROO 是如何自动产生样板(boiler plate)代码,同时又提供灵活性以增加自定义业务逻辑和校验规则的?

对 Roo 产生的所有部件,你都可以用自己选择的编辑器、IDE 或其他工具来编写代码。Roo 位于后台,监视你的项目文件。然后为你的项目构建一个全面的元数据模型。该元数据模型让 Roo 可以识别你所提供的东西以及你想让 Roo 提供的东西。然后它将自动提供这些组件。如果你选择以后自己提供这些组件中的一部分,Roo 也能检测到这一点并透明地删除其自动提供的那部分内容。

ROO 框架使用 Aspect 来描述像 @Configurable 这样的注解。在 Roo 框架中使用 AOP 背后的理由是什么?

至于为什么我们使用 aspect 作为 Java 代码生成的基础,背后有许多动机,我在我的系列博文的第三部分谈到了这一内容。但是实质上我提供了一些不同的备选技术原型,包括 JSR 269 、构建时生成源代码、IDE 插件、开发时产生字节码、运行时产生字节码以及高级反射方法如扩展 Spring Framework AOP、DSL 等等。 我优先要考虑的事情是确保:

  • 就算用户停止使用这一工具,他们的项目照样能够进行;这直接就排除了采取任何运行时动作的可能性。
  • 在运行时,用户的项目必须不以牺牲性能为代价;这直接排除了大多数反射方法的可能性。
  • 开发者要能够使用他们已有的 Java 知识、技巧和经历。于是工具必须支持常规 Java 编程体验、支持开发者的普通编程形式、使他们可以使用自己常用的 IDE,访问熟悉的工具如 debugger 和代码助手。该工具必须能使开发者运用已知、已理解及所期望的东西。这样就排除了任何特定的字节码方法以及大多数运行时方法。
  • 该工具必须能自动工作,并且不需要明确调用,也不需要系统集成或建造特定 IDE。它必须绝对支持透明的、即时的 round-tripping。这就排除了 JSR 269 以及构创建于系统等方法,比如类似于 XDoclet 的工具。

其次要考虑: - 用户的项目必须工作于 Java 5 及更高版本上。这就排除了 JSR 269,将其排除的原因还有很多(比如原型时期脆弱的 IDE 支持)。

  • 该工具应该容易让最终用户进行扩展。当然,由于我们使用了 AspectJ 技术,这是件非常容易的事。它还不鼓励使用任何特定 IDE 的技术,这可能比 Roo 附加组件需要更复杂的开发和部署过程。
  • 该工具对增加附加组件的支持应该是长期的。使用 AspectJ ITD 提供的分离概念可以很容易的实现这一点。
  • 该工具应该非常轻量级:下载、学习、运转都应非常迅速。这对一个拥有最少依赖的基于 shell 的方法非常有利。Roo 1.0.0.M1 下载文件小于 3M!

实质上 AspectJ ITDs 增加了一个自动维护的元数据模型,它是我们能找到的唯一解决方案,可以满足所有需求。当然,如果你愿意牺牲一些表达方面的要求的话,自然会有其他方法解决这一问题。

Roo 与其他代码生成工具如 openArchitectureWare( oAW )和 Skyway 软件的 Skyway Builder 相比如何呢?

oAW 给应用程序开发提供了一个模型驱动的方法。我相信在许多场景下 MDA 非常有效。不过,Roo 不是一个 MDA 工具。正如我早先在讨论 Roo 背后的重点(在 ROO-1 问题中所表述的)时所提到的,我们的关键要点是提交一个非侵入的且高生产效率的工具,可以利用现有 Java 开发者的知识、技巧及经历。我们相信大多数 Java 开发者更希望用 Java 编写代码,正因为如此,我们开发出了 Roo,并凭借代码优先范式给他们带来高生产效率。这和模型优先范式有很大区别。 题外话,我认为代码优先正是 IDE 流行的原因。人们可以以自己喜欢的方式编写代码,而且比不用 IDE 生产率更高。开发者可以按自己的适应程度逐步的使用 IDE 更多的特性。开发者可以退出 IDE 而他们的项目仍能工作。开始使用 IDE 或停止使用 IDE 都无需“做出重大改变”。一个不需要任何运行时组件(带有相关的性能、兼容性、可移植性及审批问题)的 IDE。这些都是理想特性,并且最终用户会从编程工具中受益。Roo 给快速应用开发带来了所有这些特性。

Skyway Builder 的用户通常都为所期望应用功能创建一个图形表示。然后将其映射到 Java 源代码。我知道 Skyway 正增加一些脚本,支持其基于 Roo 语法的工具。

Skyway 和 oAW 都可以产生标准 Java 源代码并被实现为 Eclipse 插件。相反 Roo 产生的是 AspectJ ITDs。我们评估了源代码生成技巧,感觉把产生的 Java 成员放到单独的 ITD 中更可取。这样避免了把类搞乱,确保了关注点分离并且提供了与未来相关 Roo 附加组件的兼容性。我还要指出的是,Roo 发行的 ZIP 文件小于 3Mb,因此比基于 Eclipse 的工具占用内存更小。加上可以在文本编辑器或非 Eclipse IDE 环境下使用 Roo,没有任何问题。Roo 实际上不需要培训就可以使用——开发者可以在他们希望的任何地方编写代码,Roo 不会做任何干涉。如果使用其他工具,在开始编写代码之前,开发者需要先理解工具要求。

对于有兴趣使用 ROO 框架的开发者,值得推荐的最佳实践及“问题”是什么?

Roo 仍在开发的早期阶段,因此尽管这一技术可能对许多喜欢 Spring 的 Java 开发者来说都有兴趣,但我们还需谨记到目前为止它只公开流通了一个月。我们需要更长的时间来确定功能、修改 bug、接收反馈、编写文档、发布 1.0.0.GA 等等。我们热切期望能收到尽量多的反馈,这将帮助我们交付高质量的 1.0.0.GA 版本(大概是在 2009 年 8 月)。 至于“问题”,在 readme.txt 中有一个已知问题列表。尽管我不认为它们会影响到太多的人,但随着时间推移我们将解决这些问题。还有一个公开的 JIRA 实例罗列了其他一些问题。

在新特性方面,ROO 项目未来的路线图是怎样的?

正如前面所提到的,我们仍把主要精力放在 1.0.0.GA 上。一旦 1.0.0.GA 问世,我们将把 shell 部分从 Roo 中分离出来,放到一个单独的项目中,我们将称之为 Spring Shell。Spring Shell 以后就可以被其他需要 shell 功能的项目所用。另外,我们计划发展一些第四代 Web 应用技术(如 Flex GWT 技术)。我们还将仔细考虑一下未来需要什么样的附加组件功能,哪些新附加组件是社区最想看到的。社区可以通过 Roo社区论坛或问题跟踪系统共享他们对新特性想法、建议和经验。对于那些喜欢以非正式的、直接的方式提供反馈的人,我们也会密切留意#roo Twitter 频道。

查看英文原文: Spring Roo 1.0 M1 Released

2009-06-08 01:182804
用户头像

发布了 150 篇内容, 共 48.6 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

香港服务器流量选择,该如何选择?高防服务器租用防御多少G合适呢?

九河云安全

258W 字 Java 全栈面试题!实锤:阿里架构师耗时半年整合而来!

Java 编程 架构 面试 计算机

面试官:你说说一条查询SQL的执行过程

艾小仙

高防服务器选择注意的三大方面

九河云安全

2021 年最全Java架构面试点+技术点标准手册:完全对准一线大厂,猛攻!

Java 编程 面试 IT 计算机

面试官:你了解Java中的锁优化吗?

程序员阿杜

Java 面试 JVM 同步 8月日更

万字深入HarmonyOS ACE UI框架解析,带你看懂UI渲染流程

科技汇

ONES x 知名游戏公司 | 持续快速交付高质量游戏产品

万事ONES

研发管理 解决方案

驶向未来之海的“必备罗盘”:百度智能云升级发布全新智能化中台

百度大脑

人工智能 企业服务

鬼知道我这一年是怎么过来的?Java 开发从二面被拒到收割阿里架构 offer!

Java 编程 面试 IT 计算机

WICC 2021 技术分论坛 “开箱即用”语聊房Demo成亮点

融云 RongCloud

NLP随笔(一)

毛显新

人工智能 自然语言处理 深度学习

FastApi-03-查询参数

Python研究所

FastApi 8月日更

应对极端天气,百度智能云推出城市内涝智能监测预警系统

科技热闻

阿里P8架构师又传喜讯!最新产出 Java 架构师 1575 道“完美圣经”,汇总十家互联网大厂面试题!

Java 编程 IT 计算机 知识

3000人群被字节内部技术图谱“炸”翻了,惊艳级实用

Java架构师迁哥

容器和虚拟机水火不容?不存在的!

谐云

2021Java春招面试真题:记一次蚂蚁金服Java研发岗的面试经历

策划Java工程师

Java 程序员 后端

高防云服务器 VS 云服务器

九河云安全

外包三年经验,耗时半年进大厂,整合出 25W 字 Java 全栈面试题,把初心分享出来!

编程 架构 面试 IT 计算机

IM开发干货分享:网易云信IM客户端的聊天消息全文检索技术实践

JackJiang

全文检索 即时通讯 IM

互联网通信云崛起的“融云曲线”

融云 RongCloud

科技融合:Hightopo受邀参加厦门公安科技活动周

一只数据鲸鱼

数据可视化 智慧公安 智能化 安全态势

高亮的架构毕业总结

高亮

架构训练营

1个月学会Java开发!2021年最新Java面试点梳理

策划Java工程师

Java 程序员 后端

架构学习总结

c

架构实战营

Cocos Creator v3.2 正式支持 HarmonyOS 多设备协同能力

科技汇

体验百度EasyEdge,畅快部署超多AI芯片

百度大脑

人工智能 飞桨

百度大脑FaceID人脸识别模型量化技术,确保算法精度无损加速一倍

百度大脑

算法 人脸识别 精度

微前端在平台级管理系统中的最佳实践

中原银行

LeetCode题解:173. 二叉搜索树迭代器,递归,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

Spring Roo 1.0 M1发布了_Java_Srini Penchikala_InfoQ精选文章