Als ich in den Neunzigern mit Java anfing, war vom ersten Tag an alles " Einmal schreiben, überall ausführen! ". Das war damals wahrscheinlich alles wahr und ich war auch ein Teil des Chores.
Ich bin mir nicht mehr sicher, was ich davon halten soll, wenn ich all die anderen Sprachen betrachte, die Laufzeit auf mehreren Plattformen verwenden (Python, Flash, Perl, HTML, PHP ...). Aber ich sehe immer noch viele Argumente, die besagen, dass Sie Java verwenden sollten, weil es angeblich besser für die plattformübergreifende Entwicklung ist.
Also, Ist das noch heute wahr? Ist Java immer noch die Sprache der Wahl für die Entwicklung mehrerer Plattformen?
- Bitte seien Sie spezifisch und konzentrieren Sie sich auf plattformübergreifende Aspekte.
- Ich bitte nicht um allgemeine Sprachvergleiche.
Update: Bisher großartige Antworten! Die meisten Antworten scheinen Java oder das Internet zu bevorzugen. Irgendeine Eingabe von der Skriptmenge?
quelle
Antworten:
Skriptsprachen wie Python erleichtern auch die plattformübergreifende Entwicklung. Nun, ob Sie Python (oder andere solche Sprachen) mögen, hängt von Ihnen ab, und wir brauchen diese Debatte wahrscheinlich hier nicht zu beginnen.
Java versucht, Sie zum Schreiben von Code zu zwingen, der portabel ausgeführt wird, während Sie mit Python portablen Code schreiben können. Die eigentliche Python-Sprache selbst wird portabel ausgeführt, aber externe Bibliotheken können oder können nicht. Darüber hinaus gewährt Python freien Zugriff auf plattformspezifische Dienste.
Hat Java da einen Vorteil? Ich denke in beiden Fällen können Sie den portablen Code mit ähnlicher Leichtigkeit schreiben. Das heißt, Sie können Code schreiben, der normalerweise auf verschiedenen Plattformen funktioniert. Aber Sie können nicht einfach nur Code schreiben und davon ausgehen, dass er überall funktioniert. Ich habe an einem Python-Projekt gearbeitet, das eine Version für Windows, Linux und Mac erstellt hat, und es gab nur wenige plattformübergreifende Probleme. (Das Einzige, an das ich mich erinnere, war ein Fehler in der Bibliothek, bei dem wir Pygame verwendeten, was zu Problemen beim Zeichnen unter Linux führte. Dies wurde durch ein Upgrade der von uns verwendeten Pygame-Version behoben.)
Ein weiteres Problem ist die Bereitstellung. Wenn Sie eigenständige Programme verteilen möchten, die Ihren Code ausführen, müssen Sie verschiedene Versionen für verschiedene Plattformen erstellen. Für Java können Sie eine Version verteilen und davon ausgehen, dass der Benutzer Java installiert hat, oder Sie können es installieren. In diesem Fall gewinnt Java wahrscheinlich an der Einfachheit der Implementierungsabteilung.
Letztendlich kommt es meiner Meinung nach darauf an, mit welcher Sprache Sie gerne arbeiten und welche Art von Bereitstellung Sie durchführen müssen.
quelle
Java ist möglicherweise nicht das oder das einzige funktionsfähige plattformübergreifende Tool, hat jedoch einige Stärken:
und einige Schwächen:
Wenn es speziell um die Java- Plattform geht , gibt es einen Punkt mehr:
quelle
Es ist heute so wahr wie damals - das heißt nicht ganz. Java ist einmal schreiben, testen und debuggen überall. Sicher, das ist viel weniger Arbeit als ein völlig frischer Port, aber im Allgemeinen ist es mehr Arbeit, als der anfängliche Hype von uns angenommen hat.
Unser Produkt verfügt über einen Java-Server, der entweder unter Windows oder Linux ausgeführt werden kann. Wir haben jedoch betriebssystemspezifische Probleme festgestellt und stellen sicher, dass sowohl Linux- als auch Windows-Server für Support- / Testzwecke zur Verfügung stehen. Java-Benutzeroberflächen weisen in der Regel mehr Probleme auf als die Server (obwohl viele kosmetisch sind und daher je nach Anwendung möglicherweise ignoriert werden können).
Das Web ist für mich zwar nicht unbedingt eine Sprache, aber die plattformübergreifende Plattform der Wahl. Ein HTML / JavaScript-Frontend bedeutet, dass Ihre Anwendung auf nahezu jeder Client-Plattform ausgeführt werden kann. In den meisten Fällen war dies das eigentliche Ziel - Sie müssen sich keine Sorgen machen, ob es sich um einen Mac oder einen PC handelt, welche Betriebssystemversion usw.
Natürlich bestimmen Sie im Allgemeinen immer noch die Serverplattform, aber wenn die Leute viel flexibler werden, insbesondere heutzutage, wenn die meisten Unternehmen bereits eine Mischung aus Windows- und Linux-Servern unterstützen.
quelle
Persönlich würde ich sagen, dass Java immer noch die plattformübergreifende Sprache der Wahl ist und wahrscheinlich (neben Webanwendungen) noch einige Zeit dort verbleibt. Ich habe in diesem Beitrag etwas mehr zum Thema Java als Plattform der Wahl geschrieben , insbesondere aber plattformübergreifend:
Solange Sie mit Ihren Abhängigkeiten vorsichtig umgehen (z. B. Bibliotheken vermeiden, die JNI für die Schnittstelle mit nativem Code verwenden), kann Java auf allen wichtigen JVM-Plattformen unverändert ausgeführt werden
Da Java normalerweise als maschinenunabhängiger Bytecode verteilt wird, können Sie es ohne erneute Kompilierung auf jeder JVM ausführen (da die lokale JVM selbst die JIT-Kompilierung in nativen Code übernimmt). Zum Beispiel ist es mir gelungen, eine vernünftig komplexe GUI-App nach der Entwicklung unter Windows zum ersten Mal auf einem Mac auszuführen - mit derselben JAR-Datei . Vergleichen Sie dies mit den meisten anderen plattformübergreifenden Sprachen, für die normalerweise andere Bibliotheken oder eine Neukompilierung für eine andere Plattform erforderlich sind.
Viele der benötigten Kernbibliotheken (GUI, Networking, IO usw.) sind Bestandteil der Standardlaufzeit und plattformübergreifend geschrieben. Damit Sie nicht nach plattformübergreifenden Bibliotheken suchen und diese testen müssen, ist garantiert, dass praktisch alles, was Sie benötigen, bereits in der Laufzeitumgebung vorhanden ist.
quelle
Ich denke, Sie haben die Wahl:
1) benutze entweder a
2) Wie werden Sie Ihren Code verpacken und ausliefern?
Diese Auswahlmöglichkeiten wirken sich auf die Leistung, die Sichtbarkeit des Quellcodes und die Verteilung aus.
Macht es Ihnen etwas aus, Ihren Quellcode preiszugeben? Kompilierte Sprachen könnten für Sie sein. Kompilierte Sprachen scheinen in Mikro-Benchmarks eine bessere Leistung zu erbringen als interpretierte Sprachen (sogar JIT-Sprachen). Auch wenn Sie auf eine Laufzeitumgebung wie Java, Python, Ruby usw. angewiesen sind, ist Ihr Code möglicherweise schwerer zu verbreiten.
Ich fand heraus, dass die beliebtesten plattformübergreifenden Desktop-Anwendungen "Ein Front-End, mehrere Binärdateien" mit C / C ++ und einer plattformübergreifenden Widget-Bibliothek verwenden, z. VLC.
quelle
Ich werde nein sagen. Python und Ruby werden häufig verwendet, ebenso Javascript auf Client- und Serverseite. Ich persönlich benutze .NET und habe keine Probleme damit, es auf Mac und Linux (während der Entwicklung unter Windows) laufen zu lassen.
-edit- Ich höre, LLVM wird immer beliebter, ist aber immer noch extrem klein. Auf diese Weise können Sie plattformübergreifendes C ++ in einer einzelnen Binärdatei verwenden. Anscheinend wird es auf dem Browser ausgeführt, aber ich habe noch kein Beispiel gesehen, in dem Sie den Dom ändern oder Javascript aufrufen können.
quelle
Wenn Sie mobile Plattformen in den Mix einbinden, müssen Sie zumindest die Neukompilierung einbeziehen. ZB Android, j2me.
quelle