 |
Boolean methods end in ?. Dangerous methods end in ! |
 |
you can fit in your mind and write code without looking at the docs every six minutes |
 |
less syntax and less typing |
 |
Discipline. Because of its inherent flexibility, Ruby require more self-discipline |
 |
"." (dot) is a method call operator. "::" (colon-colon) is a scope operator. |
 |
Ruby classes are Objects (therefore String.new, not new String()) |
 |
Everything is an Object |
 |
Ruby does not have type casting. |
 |
Compared to Java, XML is agile. Compared to Ruby, XML is Heavy. |
 |
Ruby has O/R mappers, so find your Ruby "hibernate", but drop any preconceptions. |
 |
Don't worry about early performance optimization |
 |
Enjoy closures and blocks |
 |
No method overloading |
 |
Don't worry about interfaces, enjoy Duck Typing. |
 |
Reflection in Ruby is much easier than in Java, and more deeply into the language than the java.lang.reflect tack-on. |
 |
That you can write Ruby in Java (http://jruby.sourceforge.net) |
 |
Everything is an expression. |
 |
local_variable, @instance_variable, $global_variable, Constants, (and @@class_variables) |
 |
Java static methods do not (quite) translate to Ruby class methods. |
 |
you can have variable number of parameters, and multiple return values |
 |
Ruby is not a Silver Bullet, unlike Java, right? :-) |
 |
Ruby is a language to be used everywhere. You use it even in templates. No need for "Velocity/JSP." |
 |
Web-development is possible with other languages besides Java. |
 |
Many things that you're used to thinking of as syntax are now just |
 |
Ruby is strongly typed, not statically typed |
 |
Ruby has extensive reflection capabilities |
 |
Ruby is dynamic. You can add, remove and modify objects, classes and methods at runtime. |
 |
REXML vs. JAXP. I rest my case. |
 |
KISS |
 |
Think in terms of methods (behaviors) instead of classes. |
 |
you cannot rely on the compiler to catch trivial mistakes |
 |
No explicit types. Probably the most disconcerting thing for a javahead |
 |
ruby has shortcuts for accessor methods which reduces alot of redundant coding in java |
 |
you can use string interpolation, ex: "x: #{@myvar}" instead of having to say "x:" + myvar' |
 |
no semi-colons, optional parenthesis |
 |
Ruby classes are always "open". |
 |
C extensions/wrappers are *much* easier in Ruby than JNI interfaces in Java |
 |
Ruby has MVC and OO programming and libraries, but drop any preconceptions. |
 |
In Ruby data is strongly typed, but variables are *not* |
 |
Once you start coding Ruby, going back to Java is painful. |
 |
CamelCase for class names, names_with_underscores for methods and variables. |
 |
stop writing so much code |
 |
ri is your friend. irb is your other friend. |
 |
eval |
 |
the builtin classes are much faster because they're written in C and not Ruby |
 |
Avoid external utility classes |
 |
Use class methods to define pseudo-compile directives |
 |
You probably don't need Factories |
 |
Enumerable is your friend |
 |
Typing is the enemy |
 |
No external configuration files |
 |
method_missing |
 |
Singleton methods |
 |
Ruby packaging vs Java packaging |
 |
ruby has multiple inheritance through mixins (this is sooo nice to have) |
 |
writing code in ruby, can improve the code you write in java |
 |
Ruby is agile, perfectly suited for XP |
 |
Ruby's OO is message based. |
 |
Fixed what's wrong with Perl |
 |
Fixes what's wrong with Python |
 |
It's super productive (like Perl, Python and Smalltalk)- maybe 5-10x Java. |
 |
Is a lot like Smalltalk, but doesn't look as funny |
 |
Is a lot like JavaScript, but more OO and more for ful app development |
 |
Blocks and Closures |
 |
Open Classes |
 |
Duck Typing |
 |
"finally" is called "ensure" |
 |
Use blocks for transactional behavior like like File.open does. |
 |
Help at: http://ruby-lang.org/en, http://ruby-doc.org/, news:comp.lang.ruby, irc:ruby-talk |
 |
An instance of a class can be extended to be subtly different, without needing to subclass. |
 |
you can change your mind about whether .foo is a simple property or a complex method call, without affecting the interface to your class. |
 |
HEREDOC strings with variable interpolation make large chunks of output really easy to construct. |
 |
For good (but subtle) reasons, you have to leave the '++' and '--' behind. |