Java 成熟稳定,经过了测试,而且速度很快(与反 Java 阵营的观点相反)。它也很冗长。从 Java 转到 Ruby,预计您的代码量会大幅缩减。您还可以预期,它将花费更少的时间来构建快速原型。
相似之处
与 Java 一样,在 Ruby 中,…
- 内存由垃圾收集器为您管理。
- 对象是强类型。
- 有公共、私有和受保护的方法。
- 有嵌入式文档工具(Ruby 的称为 RDoc)。rdoc 生成的文档看起来与 javadoc 生成的文档非常相似。
差异
与 Java 不同,在 Ruby 中,…
- 您不需要编译代码。您只需直接运行它。
- 有几个不同的流行第三方 GUI 工具包。Ruby 用户可以尝试 WxRuby、FXRuby、Ruby-GNOME2、Qt 或 Ruby 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?()
。