ruby生成java代码 ruby encode( 二 )


相比之下 Ruby on Rails 框架则是新的 并没有很多人使用 Rails 开发高通信流量的站点 并且几乎不存在什么使用 Rails 多年开发项目的经验 但它仍然是一种高生产力的数据库支持的 Web 应用程序开发的框架 最后 尽管我们对 Rails 缺乏开发长期项目的经验和并未得到广泛部署有所顾虑 但那份紧凑的时间表驱使我们选择了 Ruby on Rails
作出这个决定之后 我们发现招募项目人才非常容易 我们还发现早期的生产力优势非常显著 —— 甚至比预期的还要好 我们确实遇到了一些早期的稳定性问题 因此加强了测试工作的力度 此后稳定性得到了极大的改进
原理
每个框架设计者都使用一组假定来构造该框架的重写原理 学习遵守该原理的约束可使您愉快地进行编程 而挑战这些约束则会使您的编程受挫 Rails 框架和 Java 框架拥有很多不同的原理
Rails 是一种集成框架 需要使用高度利用 Ruby 语言的动态本质 Rails 开发人员强调框架的生产力特性而不是工具特性 并且常常将 Web 架构看得非常简单 在本系列的前几篇文章中您已了解到这一点 Java 设计者通常必须分块地组合开发环境 独立地选择持久性 Web 和集成层 他们通常严重地依赖工具来简化核心任务 Web 架构设计趋向于较为复杂
完全集成
Java 框架往往是解决一个小问题(比如持久性或查看组织) 而 Rails 则是一个集成环境 Rails 开发人员的优势在于不必解决与许多不同框架集成的问题 大多数 Hibernate 开发人员陷入了过早关闭与 Java Web 框架之间的连接的陷阱 Rails 视图框架是从头构建的 以便与 ActiveRecord 集成(Rails 持久性框架) 当您考察用于 Web 服务 配置和插件的 Rails 框架时也会发现类似的经验 Java 编程支持各种不同的框架 对于所有这些框架使用不同的集成策略
Java 开发人员的优势在于选择 如果您需要从头构建一个框架 则可能要考虑使用基于 SQL 的解决方案用于数据库集成(如 iBATIS 或 Java 编程中基于 JDBC 的包装框架之一) 反过来 如果要使用一种古老的模式进行编程 则可能要使用对象关系映射框架(如 Hibernate) 相比之下 如果您使用 Rails 则拥有一个主要选择 ActiveRecord 这意味着 Java 框架提供了更多的选择 有时能提供更好的集成开发项目的解决方案 但是由于我们要开发一个 green field 项目 因此选择算不上是一个问题
一种动态语言
Rails 原理的下一个主要部分是动态编程语言 Java 工具往往可以有效地使用 Java 类型模型提供的额外信息 工具可以识别错误和有效地重构代码 Rails 还可有效地利用编程语言的优点 Ruby 是一种构建特定于域的语言(DSL)的理想语言 Rails 集中使用 DSL 来完成从构建模型对象之间的关系到指定自定义组件(如状态机器或可上传的图像)的所有工作 动态语言常常更加简洁 因此 Rails 项目比 Java 项目要简练得多 可让用户更简练地表达代码和配置 在 Ch 项目中 我们发现技术顶尖的程序员可达到更高的生产力 但是我们确实需要招募经验更丰富的开发人员 我对这种妥协非常满意
传统的 Java 程序员对 IDE 有着近乎虔诚的热爱 造成这一现象有充分的理由 IDE 提供了语法的完整性检查 修正了小错误并提供了增量编译以便更快地完成编码 编译 部署和测试这样的周期 最近几年来 开发环境开始更好地利用编译循环和静态类型提供的信息 IDE 现在编辑抽象语法树(AST) 而不是(或者同时)编辑代码的文本表示 这一策略允许使用强大的代码重构工具 而使用静态类型语言的同样方法来实现此功能则困难得多
静态类型确实能更好地使用工具 但是也存在缺点 强制使用静态类型通常需要编译器 而编译步骤必然会降低生产力 使用 Rails 我可以更改一行代码并重新加载浏览器 就可立即看到更改的结果 与 Java 开发人员相比 大多数 Ruby 开发人员只使用一种很好的编辑器 TextMate 是最流行的 Ruby on Rails 编辑器 它提供了语法突出显示 代码完整性检查 以及一些频繁使用的结构的良好的模板支持 而当发现可将所有简单的基于 Ruby 的脚本(用作基本的 Rails 工具包)放入编辑器中时 您会更加喜出望外 与纯粹的调试器不同的是 我可以使用断点脚本 该脚本可停止特定的应用程序 进入一个 Ruby 解释程序 我可在其中调用方法 检查变量的值 以及甚至在恢复执行之间修改代码

推荐阅读