Java wird oft als portabler bezeichnet als andere kompilierte Sprachen, da die ausführbare Datei auf jeder Plattform mit einer JVM ausgeführt werden kann. Aber in C geschriebener Code kann auf jeder Plattform mit einem C-Compiler ausgeführt werden.Warum wird eine interpretierte Sprache als tragbarer angesehen?
Also, naiv, gibt es zwei Alternativen: machen Sie viele verschiedene Compiler für viele verschiedene Plattformen und übertragen Quellcode über ein Netzwerk für sagen, ein Applet, das Client-Seite kompiliert wird; oder machen Sie viele verschiedene virtuelle Maschinen, um auf vielen verschiedenen Plattformen zu laufen und das gleiche, ausführbare Programm oder Applets über Netzwerke zu übertragen.
Warum ist letzteres besser? Ich kann sehen, wie eine serverseitige Kompilierung wünschenswert ist, aber ich glaube, da steckt mehr dahinter. Ich weiß, dass es für Sun Microsystems weniger Arbeit war, JVMs für viele Plattformen als Compiler für viele Plattformen zu erstellen, aber das war sicherlich nicht die Hauptmotivation.
Ihre Frage ist etwas verwirrend. Ich kann immer ein Java-Programm schreiben, das unter Linux läuft und unter Windows überhaupt nicht läuft. Portabilität ist ein Artefakt eines Programms, vorausgesetzt, dass auf einer Zielplattform eine geeignete 'Laufzeit' (eine virtuelle Maschine oder ein einfacher alter Linker/Loader) existiert, nein? –
Beide Pragmas (Kompilierung oder Runtime-Engines) haben ihren eigenen Vorteil. – jogo