De Java à Ruby
Java est un langage mature. Testé et éprouvé. Et rapide, avec ça (malgré les racontards). D’un autre coté, il est assez verbeux. Passer Java à Ruby, c’est vraiment voir fondre sa quantité de code. Ruby peut également permettre au javaiste la mise en place plus rapide de prototypes.
Similarités
Tout comme en Java, en Ruby…- la mémoire est l’affaire d’un garbage collector ;
- les objets sont fortement typés ;
- il y a des méthodes privées, publiques, protégées ;
- il y a des outils de documentation fournis par défaut (
ri, RDoc), qui ont un look ‘n feel assez proche de javadoc.
Différences
Contrairement à Java, en Ruby…- il n’ai pas besoin de compiler son code, simplement de l’exécuter directement ;
- des toolkits graphiques différents sont disponibles. Voir par exemple WxRuby, FXRuby, Ruby-GNOME2, ou la bilbiothèque Tk fournit d’office.
- utilisation du mot-clé
endpour clôturer la définition des classes, par exemple, en lieu et place des accolades englobantes ; requireau lieu du mot-cléimport;- toutes les variables de membres sont privées ; l’accès à ces « attributs » se fait via des méthodes ;
- les parenthèses dans les appels de méthodes sont bien souvent optionnelles ;
- tout est un objet, y compris les nombres comme 2 et 3,14159 ;
- pas de vérification de typage statique ;
- les noms de variables ne sont que des étiquettes sans type ;
- pas de déclarations des types. Il suffit d’assigner un nom à une nouvelle variable lorsque le besoin s’en fait sentir (par exemple,
a = [1,2,3]plutôt queint[] a = {1,2,3};) ; - pas de cast. Appelez simplement les méthodes. Vos tests unitaires devraient vous dire très vite, avant d’exécuter le code, si une exception devrait survenir suite à une erreur ;
foo = Foo.new("hi")au lieu defoo = new Foo("hi)- le constructeur s’appelle toujours
initialize, et non pas le nom de la classe concernée ; - l’héritage multiple et les interfaces sont géréés par le mécanisme des mixins ;
- YAML est souvent préféré à XML dans la communauté ;
nilau lieu de @null ;- Ruby attribue des comportements contraire à
==etequals(). En Ruby, vous utiliserez==pour tester une équivalence logique (ce test est réalisé avecequals()en Java). La méthodeequals?(), quant à elle, permet de savoir si deux objets n’en sont qu’un (c’est le sens de==en Java).
rubyforge.org rubyforge.org rubyforge.org rubyforge.org rubyforge.org radiantcms.org redmine.ruby-online.co.uk tryruby.hobix.com