Von Ruby nach Java

Java ist ausgereift. Es ist erprobt. Und es ist schnell (entgegen dem, was die Anti-Java-Fraktion vielleicht immer noch behauptet). Es ist auch ziemlich wortreich. Wenn Sie von Java zu Ruby wechseln, erwarten Sie, dass sich die Code-Größe erheblich verringert. Sie können auch erwarten, dass es weniger Zeit kostet, schnelle Prototypen zusammenzustellen.

Ähnlichkeiten

Wie bei Java wird auch in Ruby...

  • Der Speicher wird über einen Garbage Collector für Sie verwaltet.
  • Objekte sind stark typisiert.
  • Es gibt öffentliche, private und geschützte Methoden.
  • Es gibt integrierte Dokumentationstools (Rubys heißt RDoc). Die von RDoc generierten Dokumente sehen javadoc sehr ähnlich.

Unterschiede

Im Gegensatz zu Java wird in Ruby...

  • Sie müssen Ihren Code nicht kompilieren. Sie führen ihn einfach direkt aus.
  • Es gibt mehrere verschiedene beliebte GUI-Toolkits von Drittanbietern. Ruby-Benutzer können zum Beispiel WxRuby, FXRuby, Ruby-GNOME2, Qt oder Ruby Tk ausprobieren.
  • Sie verwenden das Schlüsselwort end nach der Definition von Dingen wie Klassen, anstatt Codeblöcke in geschweifte Klammern einschließen zu müssen.
  • Sie haben require anstelle von import.
  • Alle Member-Variablen sind privat. Von außen greifen Sie über Methoden auf alles zu.
  • Klammern bei Methodenaufrufen sind meist optional und werden oft weggelassen.
  • Alles ist ein Objekt, einschließlich Zahlen wie 2 und 3,14159.
  • Es gibt keine statische Typüberprüfung.
  • Variablennamen sind nur Bezeichner. Ihnen ist kein Typ zugeordnet.
  • Es gibt keine Typdeklarationen. Sie weisen einfach neuen Variablennamen nach Bedarf zu, und sie "entstehen" einfach (d.h. a = [1,2,3] anstelle von int[] a = {1,2,3};).
  • Es gibt kein Casting. Rufen Sie einfach die Methoden auf. Ihre Unit-Tests sollten Ihnen bereits vor der Ausführung des Codes mitteilen, ob Sie eine Ausnahme sehen werden.
  • Es ist foo = Foo.new("hi") anstelle von Foo foo = new Foo("hi").
  • Der Konstruktor heißt immer "initialize" anstelle des Namens der Klasse.
  • Sie haben "Mixins" anstelle von Interfaces.
  • YAML wird tendenziell gegenüber XML bevorzugt.
  • Es ist nil anstelle von null.
  • == und equals() werden in Ruby anders behandelt. Verwenden Sie ==, wenn Sie die Äquivalenz in Ruby testen möchten (equals() in Java). Verwenden Sie equal?(), wenn Sie wissen möchten, ob zwei Objekte identisch sind (== in Java).