从 Java 到 Ruby

Java 成熟稳定,经过了测试,而且速度很快(与反 Java 阵营的观点相反)。它也很冗长。从 Java 转到 Ruby,预计您的代码量会大幅缩减。您还可以预期,它将花费更少的时间来构建快速原型。

相似之处

与 Java 一样,在 Ruby 中,…

  • 内存由垃圾收集器为您管理。
  • 对象是强类型。
  • 有公共、私有和受保护的方法。
  • 有嵌入式文档工具(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
  • ==equals() 在 Ruby 中的处理方式不同。当您想在 Ruby 中测试等效性时,请使用 ==(在 Java 中为 equals())。当您想知道两个对象是否相同(在 Java 中为 ==)时,请使用 equal?()