Java 非常成熟,久经检验,且非常快(与那些反对java的人可能还在声称的相反)。但它也非常啰嗦。从 Java 到 Ruby,可以预见的是代码规模将大大缩小。你也可以期望使用相对少的时间快速出产原型。
相似点
Ruby 与 Java 一样的地方……
- 垃圾回收器帮你管理内存。
- 强类型对象。
- 有 public、 private 和 protected 方法。
- 拥有嵌入式文档工具(Ruby 的工具叫 rdoc)。rdoc 生成的文档与 javadoc 非常相似。
相异点
Ruby 与 Java 不同的地方……
- 你不需要编译你的代码。你只需要直接运行它。
- 有几个不同的流行的第三方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)”。
- 相比 XML,倾向于使用 YAML。
nil
替代null
。- Ruby 对
==
和equals()
的处理方式与 Java 不一样。测试相等性使用==
(Java 中是equals()
)。测试是否为同一对象使用equals?()
(Java 中是==
)。