Java jest językiem dojrzałym. Jest przetestowany. Jest także szybki (w przeciwieństwie do tego co mówi tłum przeciwników Javy). Jest także dość rozwlekła w zapisie. Przechodząc z Javy na Rubiego, oczekuj że twój kod skurczy się znacząco. Możesz także oczekiwać, że mniej czasu zajmie ci tworzenie szybkich prototypów.
Podobieństwa
Tak jak w Javie, w Rubim…
- Pamięć jest zarządzana przez garbage collector.
- Obiekty są silnie typowane.
- Występują metody publiczne, prywatne i chronione.
- Istnieją wbudowane narzędzia dokumentujące (te Rubiego nazywane są RDoc). Dokumentacja wygenerowana przez rdoc bardzo przypomina tą wygenerowaną przez javadoc.
Różnice
W przeciwieństwie do Javy, w Rubim…
- Nie musisz kompilować twojego kodu. Po prostu go uruchamiasz.
- Istnieją inne toolkity GUI. Użytkownicy Rubiego mogą spróbować WxRuby, FXRuby, Ruby-GNOME2, Qt, lub dla przykładu wbudowanego w Rubiego Tk.
- Używasz słowa kluczowego
end
, które kończy definicję takich rzeczy jak klasy, w przeciwieństwie do oznaczania bloku kodu nawiasami klamrowymi. - Używasz
require
zamiastimport
. - Wszystkie atrybuty/właściwości klas są prywatne. Dostęp do nich istnieje tylko przez metody (akcesory).
- Nawiasy w wywołaniach metod są zazwyczaj opcjonalne i często pomijane.
- Wszystko jest obiektem, włączając liczby jak 2 czy 3.14159.
- Brak statycznej typizacji.
- Nazwy zmiennych są tylko etykietami. Nie mają one powiązanego z nimi typu.
- Brak deklaracji typów. Po prostu nadajesz zmiennej nowe nazwy w razie
potrzeby a one po prostu zostaną utworzone (np.
a = [1,2,3]
w przeciwieństwie doint[] a = {1,2,3};
). - Brak konieczności rzutowania. Po prostu wywołaj metody. Twoje testy jednostkowe powiedzą tobie nawet przed uruchomieniem kodu, czy zobaczysz wyjątek.
- Używasz
foo = Foo.new("hi")
zamiastFoo foo = new Foo("hi")
. - Konstruktor zawsze nazywa się “initialize” niezależnie od nazwy klasy.
- Używasz domieszkowania klas (ang. “mixins”) zamiast interfejsów.
- Preferowany jest YAML wobec XMLa.
- Istnieje
nil
zamiastnull
. ==
iequals()
są obsługiwane inaczej w Rubim. Używaj==
kiedy chcesz sprawdzić równość w Rubim (equals()
w Java). Używajequal?()
kiedy chcesz wiedzieć czy dwa obiekty są takie same (==
w Java).