Перехід на Ruby з Java

Java — зріла. Перевірена. І швидка (всупереч твердженням анти‑Java табору). Водночас вона доволі багатослівна. Переходячи з Java на Ruby, очікуйте суттєвого скорочення коду. Також можна очікувати, що швидкі прототипи створюватимуться швидше.

Подібності

Як і в Java, у Ruby…

  • Пам’ять керується збирачем сміття.
  • Об’єкти мають строгі типи.
  • Є методи public, private і protected.
  • Є вбудовані інструменти документації (у 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”, а не як назва класу.
  • Є “міксини” замість інтерфейсів.
  • YAML зазвичай надається перевага над XML.
  • Це nil замість null.
  • == і equals() працюють у Ruby по-іншому. Використовуйте ==, коли хочете перевірити еквівалентність у Ruby (equals() у Java). Використовуйте equal?() коли хочете дізнатися, чи це той самий об’єкт (== у Java).