Main difference with Java
As with Java, in Ruby,...
As with Java, in Ruby,...
- Memory is managed for you via a garbage collector.
- Objects are strongly typed.
- There are public, private, and protected methods.
- There are embedded doc tools (Ruby's is called RDoc). The docs generated by rdoc look very similar to those generated by javadoc.
Differences
Unlike Java, in Ruby,...- You don't need to compile your code. You just run it directly.
- There are several different popular third-party GUI toolkits. Ruby users can try WxRuby, FXRuby, Ruby-GNOME2, or the bundled-in Ruby Tk for example.
- You use the
endkeyword after defining things like classes, instead of having to put braces around blocks of code. - You have
requireinstead ofimport. - All member variables are private. From the outside, you access everything via methods.
- Parentheses in method calls are usually optional and often omitted.
- Everything is an object, including numbers like 2 and 3.14159.
- There's no static type checking.
- Variable names are just labels. They don't have a type associated with them.
- There are no type declarations. You just assign to new variable names as-needed and they just "spring up" (i.e.
a = [1,2,3]rather thanint[] a = {1,2,3};). - There's no casting. Just call the methods. Your unit tests should tell you before you even run the code if you're going to see an exception.
- It's
foo = Foo.new( "hi")instead ofFoo foo = new Foo( "hi" ). - The constructor is always named "initialize" instead of the name of the class.
- You have "mixin's" instead of interfaces.
- YAML tends to be favored over XML.
- It's
nilinstead ofnull. ==andequals()are handled differently in Ruby. Use==when you want to test equivalence in Ruby (equals()is Java). Useequal?()when you want to know if two objects are the same (==in Java).

