### Прилики

както в Java, така и в Ruby …

* Паметта се управлява от виртуалната машина.
* Обектите са strongly typed.
* Съществуват public, private и protected методи.
* Съществува програмка за вградена документация (в Ruby се казва RDoc).
  Генерираните документи с rdoc подобно на тези, генерирани с javadoc.

### Разлики

За разлика от Java, в Ruby …

* Не се налага да компилирате кода си.
* Има различни GUI toolkits. Можете да прегледате [WxRuby][1],
  [FXRuby][2], [Ruby-GNOME2][3], [Qt][4], или вградената поддръжка на Ruby Tk.
* В Ruby се използва `end` за край на дефиницията на класове, методи и
  условни изрази, вместо къдрави скоби около блока код.
* Вместо `import` имаме `require`.
* Всички член променливи са private. Отвън може да ги извикаме, покажем,
  трием и т.н с методи.
* Скобите във викането на методи може да се пропусне.
* Всяко нещо е обект, включително числа като 2 и 3.14159.
* Няма проверка на типа.
* Имената на променливите са като етикети. Не се нуждаят от асоцииран
  тип.
* Липсва декларация на типа.
* Няма кастване. Просто викаме методи.
* It’s `foo = Foo.new("hi")` instead of `Foo foo = new Foo("hi")`.
* Конструктора е метод, наименован “initialize” вместо името на класа.
* Имаме “mixin”-и вместо интерфейси.
* YAML се предпочита пред XML.
* Използваме `nil` вместо `null`.
* `==` и `equals()` имат различно поведение в Ruby. `==` се използва за
  проверка на равенство (`equals()` в Java),а `equal?()` за проверка
  дали два обекта са еднакви (`==` в Java).



[1]: https://github.com/eumario/wxruby
[2]: https://github.com/larskanis/fxruby
[3]: https://ruby-gnome2.osdn.jp/
[4]: https://github.com/ryanmelt/qtbindings/
