领先一步
VMware 提供培训和认证,助您加速进步。
了解更多本周,Twitter 圈子因 SpringOne Europe 的消息而沸腾。其中一个引起广泛关注的公告是 SpringSource 的新开源生产力工具,代号为“Roo”。
Roo 是一个精密的往返代码生成器,它能让您比以往任何时候都更快、更轻松地创建和演进 Spring 应用程序。即使您对代码生成有所保留,Roo 仍然值得一试。它包含了显著的创新,解决了对代码生成的所有主要异议,同时仍然提供最佳实践的 Spring 应用程序,并在整个应用程序生命周期中保持有用。
这是我将讨论 Roo 的系列博客中的第一篇,首先从其通用的设计目标和功能开始,然后深入探讨如何使用它以及 Roo 的工程内部结构。鉴于这第一篇博客是作为介绍,让我们从重复指导 Roo 开发的使命宣言开始
Roo 的使命是在不损害工程完整性或灵活性的前提下,从根本上、可持续地提高 Java 开发人员的生产力。
这如何转化为一个工具?一位看到 Roo 的会议代表将其描述为“一个坐在后台处理我不想担心的事情的小精灵”。这个描述特别恰当,原因有二。首先,Roo 确实很“小”。它当前的下载量不到 3 兆字节,它允许您继续使用基于 Spring 的正常 Java 编程模型,并且它不需要您采用特殊的 Roo 运行时或构建技术。其次,它确实安静地坐在后台为您照管事务。最重要的是,Roo 不会碍事。如果您想自己编写某些东西,只需这样做,Roo 就会自动调整相关文件以作响应(即 Roo 支持往返)。如果您想编辑 Java 或 JSP 文件,只需这样做。Roo 不需要您使用其界面。或者如果您想停止使用 Roo,只需退出程序。Roo 不会成为您的构建系统或运行时的一部分,因此在您万一想停止使用 Roo 的极低可能性下,停止使用 Roo 也非常容易。
我们相信 Roo 在现有 IDE 的强大功能、现代 Web RAD 框架所展示的生产力潜力以及 Java 开发人员对拥有一款符合他们工作方式并反映他们所珍视的工程原则的工具的深切渴望之间找到了一个非常完美的结合点。这带来了一个非侵入性的后台工具,它极其易学,可以应用于现有和新项目,并以惊人的速度简化了世界最佳实践应用程序的开发。
当您拥有易于学习并能利用您现有知识、技能和经验的高度可用工具时,更容易提高生产力并享受开发过程。因此,可用性是我们设计 Roo 时的一个关键设计因素。我们受到了 *nix shell 提示符等通过 tab 键补全的用户界面给开发人员带来的明显生产力优势的影响。但我们更进一步,专门为 Roo 编写了一个 shell。通过提供一个 shell(而不是 GUI 或命令行实用程序),我们能够实现一个可脚本化、用户友好、易于学习、容错的界面。当您不确定时,可以按 TAB 键,Roo 将补全命令。当您需要时,可以输入“hint”,并收到项目阶段特定的指导。您可以省略命令中的选项,Roo 将根据您最近的操作自动推断您的意图。您可以输入非法命令,Roo 将小心撤销失败命令可能进行的任何更改。您可以编写一个脚本并回放它,以再次生成您的项目。您甚至不需要完全输入一个命令——只需输入足够的字符,让 Roo 识别其唯一性即可。所有这些都可以在操作系统命令行提示符下完成,甚至无需安装 IDE。
当然,大多数 Java 开发人员都使用 IDE,并认为它们对提高生产力至关重要。因此,Roo 认识到这一点,并且在您在 IDE 中处理项目时,它会愉快地继续执行。您不需要任何 Roo 特定的 IDE 插件(尽管我们确实为 SpringSource Tool Suite 提供了插件,我将在下面进一步讨论)。自然地,在您的 IDE 中,您会很高兴 Roo 被设计成通过代码辅助和调试支持来简化您的 Java 开发生活。您的调试器将像往常一样运行,逐步执行构成您应用程序的所有代码——包括 Roo 帮助您的那些文件。Roo 生成的每个源文件都将正确显示在代码辅助(Control + Space)列表中,因此您无需记住方法签名。
由于 Roo 支持您用 Java 编程,您将收到正常的增量验证,这有助于我们所有人识别缺失的括号或拼写错误的字段名。IDE 重构工具将继续为您服务,即使面对大型开发团队、不断变化的团队成员以及多年的持续开发和维护,也能确保应用程序代码质量保持高水平。最后,所有 Roo 注解目前都采用“Roo*”的命名约定。这个命名约定确保您在需要时可以轻松找到注解——尽管您实际上根本不需要输入任何 Roo 特定的注解。注解本身为您提供了对 Roo 如何帮助您开发非常细粒度的控制,允许您根据需要详细控制成员名称和自定义行为(默认设置也运行良好)。
在 SpringSource Europe,我们还展示了在 SpringSource Tool Suite (STS) 中使用 Roo,这是我们流行的、即将免费提供的基于 Eclipse 的 IDE。这使您可以在 IDE 中享受 Roo 的所有好处。您可以在屏幕底部的“Roo View”中输入命令,并立即在您的 Package Explorer 和编辑器中看到更改。或者您可以在编辑器中进行更改,并立即在 Roo View 中看到 Roo 对您的更改做出了哪些响应。它就像一个不会妨碍您的小精灵,为您打理您不想处理的事情。
Roo 建立在一个插件架构之上,该架构支持构建不同类型的 Java 应用程序。目前大约有 18 个“插件”,它们旨在支持轻松开发具有独立 JPA 实体层的请求-响应 MVC Web 应用程序。Roo 目前包含的一些具体功能如下:
所有这些功能都建立在 Roo 内部的元数据模型之上,该模型是您项目的全面表示。因此,虽然像 IDE 这样的技术提供了成员结构模型,但 Roo 通过提供反映常见开发约定的企业应用程序特定元数据,将其提升到更高的抽象层次。例如,虽然 IDE 可能知道有一个名为“Foo”的类,其中有一个名为“persist”的方法,该方法定义了某些参数和返回类型,但 Roo 也拥有这些信息以及一系列额外的元数据,例如该方法从逻辑角度意味着什么。
作为元数据模型的结果,我们将在后续版本中添加到 Roo 的功能将远远超出请求-响应 Web 应用程序开发。通过此元数据模型实现的可能性极其广泛,例如包括第四代 Web 应用程序(基于组件的、客户端执行的技术)的往返管理、往返 UML 集成、替代持久化模型(例如为云计算优化)和往返富客户端。
欢迎您参与 Roo。虽然我们已经发布了 Roo 的 alpha 版本,但这只是一个非常早期的预览版。我们目前也正在进行投票,社区可以就命名提供反馈。恰如其分地,这个投票应用程序是在 SpringOne Europe 的主题演讲期间现场开发的,并部署到云端。您可以在 http://www.springsource.org/roo 找到这些资源的链接。
正如博客开头提到的,我将在未来几周内发布几篇博客,详细介绍 Roo 的使用,以及内部架构和如何编写插件。在此期间,欢迎您通过 Twitter 上的 #roo 标签关注我们的工作。
我们希望您喜欢使用 Roo。