从 Java 迁移到 Ruby

Java 成熟、经受考验且速度快(尽管一些反 Java 的人可能仍然持不同意见)。它也很啰嗦。从 Java 转到 Ruby,代码量会显著减少。你也可以期待花更少的时间快速构建原型。

相似之处

与 Java 类似,在 Ruby 中,…

  • 内存由垃圾回收器为你管理。
  • 对象是强类型的。
  • 有 public、private 和 protected 方法。
  • 有内嵌的文档工具(Ruby 的叫做 RDoc)。rdoc 生成的文档与 javadoc 生成的非常相似。

不同之处

与 Java 不同,在 Ruby 中,…

  • 你不需要编译代码。直接运行即可。
  • 有几个不同的流行第三方 GUI 工具包。Ruby 用户可以尝试 WxRubyFXRubyRuby-GNOME2QtRuby Tk
  • 在定义类等内容后,使用 end 关键字,而不是将代码块用花括号括起来。
  • 你使用 require 而不是 import
  • 所有成员变量都是私有的。从外部访问一切都通过方法。
  • 方法调用中的括号通常是可选的,并且经常省略。
  • 一切皆为对象,包括数字,如 2 和 3.14159。
  • 没有静态类型检查。
  • 变量名只是标签。它们没有关联的类型。
  • 没有类型声明。只需根据需要为新变量赋值,它们就会“出现”(例如,a = [1,2,3] 而不是 int[] a = {1,2,3};)。
  • 没有类型转换。只需调用方法。单元测试应该在你运行代码之前就告诉你是否会遇到异常。
  • foo = Foo.new("hi") 而不是 Foo foo = new Foo("hi")
  • 构造函数始终命名为“initialize”,而不是类名。
  • 你有“mixins”而不是接口。
  • 倾向于使用 YAML 而不是 XML。
  • nil 而不是 null
  • Ruby 中的 ==equals() 处理方式不同。当你想在 Ruby 中测试等价性时(Java 中的 equals()),使用 ==。当你想知道两个对象是否相同(Java 中的 ==)时,使用 equal?()