В Ruby из Java

Java - это энтерпрайзно. Проверено. И быстро (не смотря на то, что утверждают противники). Довольно многословно. Переходя с Java на Ruby вы серьезно сократите размер кода. Разработка прототипа займет меньше времени.

Сходства

Как и в Ruby, в Java…

  • памятью управляет сборщик мусора.
  • объекты строго типизированы.
  • есть разграничение доступа на public, private и protected.
  • имеются встроенные средства документации (называемые RDoc) - генерируемая документация похожа на ту, что генерирует javadoc.

Отличия

В отличие от Java в Ruby…

  • не надо компилировать код - он интерпретируется.
  • есть несколько популярных GUI тулкитов - можно попробовать WxRuby, FxRuby, Ruby-GNOME2, Qt, или стандартный биндинг к Tk.
  • в конце определения класса используется ключевое слово end, вместо заключения кода в скобки.
  • вместо import пишется require.
  • все члены класса приватны - снаружи доступ осуществляется через методы.
  • скобки при вызове метода не обязательны.
  • все - это объект, включая числа как 2 или 3.14159.
  • отсутствует проверка типа.
  • имена переменных - это просто обозначения, для них нет специального типа.
  • нет объявления типа - можно просто присваивать переменные “на лету” (например, a = [1,2,3] вместо int[] a = {1,2,3};).
  • нет приведения типов - надо просто вызвать метод. Юнит-тесты сразу скажут, если при преобразовании возникло исключение.
  • вместо Foo foo = new Foo("hi") - foo = Foo.new("hi").
  • конструктор называется initialize вместо имени класса.
  • вместо использования интерфейсов можно “подмешивать” модули.
  • вместо XML предпочитается YAML
  • вместо null - nil.
  • == и equals() по-другому обрабатываются в Ruby. == используется для теста на равенство (equals() в Java). equal?() используется для проверки идентичности (как == в Java).