Ist Ruby so plattformübergreifend wie Java?

7

Sie können eine Java-Anwendung kompilieren und auf jedem Computer ausführen, auf dem sich die Java Virtual Machine befindet, unabhängig von der zugrunde liegenden Hardware.

Da Ruby on Rails auf Ruby aufgebaut ist, mache ich mir Sorgen, ob das Erstellen von Software in Ruby in irgendeiner Umgebung das ist gleich oder nicht. Es gibt Versionen von Ruby für Windows, Linux und Mac mindestens.

Könnten Sie das Gleiche mit einer Ruby-Anwendung und einer Java-Anwendung tun? Mit anderen Worten, wie plattformübergreifend ist Ruby?

BEARBEITEN: Ich meine Ruby allein, nicht Ruby läuft in einer anderen virtuellen Maschine wie in jRuby . Sollte ich in Ruby mehr plattformübergreifende Entwicklungen erwarten als in Java oder sind beide fast gleich?

    
eKek0 21.08.2009, 04:37
quelle

5 Antworten

13

Ruby ist eine Skriptsprache und wird zur Laufzeit vom Ruby-Interpreter interpretiert. Der Ruby-Code wird interpretiert und in Sprache auf Maschinenebene, d. h. Assemblercode, umgewandelt. Wenn Sie von der Plattform Independence sprechen, können Sie Ruby-Code in jeder Plattform wie Linux, Windows oder Mac ausführen, wenn Sie plattformabhängigen Ruby-Interpreter installiert haben.

Wie in Java wird es kompiliert und in eine Zwischenbyte-Klasse konvertiert. Diese Byte-Klasse wird von der plattformabhängigen JVM (Java Virtual Machine) interpretiert.

Auf diese Weise können Sie Ihre Ruby-Quelldatei als Byte-Klasse betrachten, die auf jeder Plattform ausgeführt werden kann, wobei eine Differenz-Byte-Klasse bereits kompiliert ist, aber die Ruby-Quelldatei zur Laufzeit kompiliert wird.

    
Srinivas M.V. 21.08.2009 04:52
quelle
5

Ruby bindet ziemlich genau an die zugrunde liegende Plattform. Dies ist insbesondere der Fall, wenn es um Prozess- / Threading-Mechanismen und verschiedene Formen von IPC geht. Dies sind größere Herausforderungen, die es zu überwinden gilt, im Vergleich zu "trivialen" wie Verzeichnisseparatoren und so weiter. Ich bin ziemlich sicher, dass es zwischen der Windows Ruby Runtime und der Linux Ruby Runtime keine Parität gibt.

Bei Java ist das IPC / Prozess- / Thread-Modell auf allen Plattformen, auf denen die JVM ausgeführt wird, identisch.

    
Svend 02.09.2009 23:41
quelle
3

Solange Sie Hardware oder Threading nicht berühren, sollte Ruby auf den drei wichtigsten Betriebssystemen arbeiten. Bei der Webentwicklung wird Ruby meistens überall gleich funktionieren. Für fortgeschrittene Anwendungen, nein, weil es nicht die Abstraktionen der JVM bietet (die Sie wahrscheinlich im Sinn haben).

    
Dean J 01.03.2010 15:24
quelle
2

Java ist plattformübergreifend. Ruby ist nicht. Es fühlt sich sehr an wie ein nachträglicher Einfall von "Oh, wir haben Windows-Benutzer, lass es uns versuchen und es funktioniert".

In Java habe ich in Jahren intensiver Nutzung weniger als 10 plattformübergreifende Probleme erlebt. Die Bereiche, in denen das war, waren offensichtlich Bereiche, die schwierig wären. System- / Dateisystem-Besonderheiten.

In Ruby habe ich Probleme beim ersten Rails-Tutorial und auch bei anderen ( Ссылка ). Ich würde Ruby Cross-Plattform nicht berücksichtigen. Die Plattform stützt sich auf eine ganze Reihe von Abhängigkeiten, die immer dann verwendet werden, wenn eine Plattform plattformspezifisch ist. sehe diesen Fehler: ExecJS :: RuntimeError unter Windows versucht, rubytutorial zu folgen

Ich habe auch ein größeres Ruby-Projekt geerbt und es verließ sich auf capistrano, webkit, bcrypt und diese benötigten ein dev build kit und native builds. Es hat nicht nur funktioniert. Sehen Sie die Leute, die hier Probleme haben: Ссылка Es ist lustig, an einem Punkt schlagen sie vor, jemand folgt einem japanischen Post:)

    
Ryan Hamilton 21.04.2016 11:57
quelle
0

Wenn nichts anderes, könnten Sie JRuby ausführen, einen Ruby-Interpreter, der in Java geschrieben ist.

    
Joe Caffeine 21.08.2009 05:15
quelle

Tags und Links