it-swarm.dev

Was ist die genaue Bedeutung der Plattformunabhängigkeit?

Was bedeutet Plattformunabhängigkeit?

Ich nehme den Fall von Java. Kann ich eine Java - Anwendung unter Linux ausführen, die auf einer Windows-Plattform basiert? Oder umgekehrt?

Kann ich auf beiden Betriebssystemen denselben (oder exakten) Programmieralgorithmus verwenden?

Meiner Ansicht nach sind Dateitypen plattformunabhängig wie Videos, Bilder, Dokumente usw.

9
Dileep DiL

Plattformunabhängigkeit in Software bedeutet, dass Sie denselben Code ohne oder mit nur geringen Änderungen auf mehreren Plattformen ausführen können.

Der Teufel steckt im Detail:

  • Es hängt davon ab, was Sie als "Plattform" definieren. In einigen Fällen kann dies eine bestimmte Hardware-Maschinenkonfiguration sein. In anderen Fällen kann es sich um einen "generischen PC" handeln. In anderen Fällen kann es sich um eine virtuelle Maschine und eine Laufzeitumgebung handeln (was bei Java der Fall ist).
  • Nichts ist "perfekt" plattformunabhängig - es gibt immer ein paar Eckfälle, die Sie auffangen können. Zum Beispiel, wenn Sie Dateipfadtrennzeichen fest codieren, anstatt das plattformunabhängige File.pathSeparator in Java dann funktioniert Ihr Code nicht unter Windows und Linux. Als Programmierer müssen Sie auf diese Dinge achten und immer die plattformunabhängige Option verwenden, bei der möglich und richtig auf verschiedenen Plattformen zu testen, wenn Sie Portabilität interessieren.
  • Es gibt immer einige Einschränkungen für bestimmte Plattformen, die nicht ignoriert werden können. Beispiele sind beispielsweise die maximale Länge von Dateinamen oder das verfügbare RAM auf einem System). Unabhängig davon, wie sehr Sie versuchen, plattformunabhängig zu sein, kann Ihr Code fehlschlagen, wenn Sie versuchen, ihn auf einem System auszuführen Plattform, die zu eng eingeschränkt ist.
  • Es ist wichtig zu beachten, dass einige Sprachen auf Quellcodeebene plattformunabhängig sind (C/C++ ist ein gutes Beispiel), aber nach dem Kompilieren des Codes die Plattformunabhängigkeit verlieren (da nativer Code plattformspezifisch ist). Java behält die Plattformunabhängigkeit auch nach dem Kompilieren von Code bei, da es zu plattformunabhängigem Bytecode kompiliert wird (die eigentliche Konvertierung in nativen Code erfolgt zu einem späteren Zeitpunkt, nachdem der Bytecode von der JVM geladen wurde).
  • Es gibt gelegentlich Fehler in Sprachimplementierungen, die nur auf bestimmten Plattformen auftreten. Selbst wenn Ihr Code theoretisch zu 100% portabel ist, müssen Sie ihn dennoch auf verschiedenen Plattformen testen, um sicherzustellen, dass Sie nicht auf ungewöhnliche Fehler stoßen!

Im speziellen Fall von Java:

  • Java Code ist plattformunabhängig in dem Sinne, dass dieselbe Java Anwendung oder Algorithmen (normalerweise kompiliert zu Java Bytecode und in eine JAR-Datei gepackt) werden unter Windows und Linux identisch ausgeführt.

  • Java-Bibliotheken (z. B. alle Open-Source-Toolsets von Nice) sind normalerweise plattformunabhängig, solange sie in reinem Java geschrieben sind. Die meisten Bibliotheken versuchen, sich an pure Java zu halten, um die Plattformunabhängigkeit aufrechtzuerhalten, aber es gibt einige Fälle, in denen dies nicht möglich ist (z. B. wenn die Bibliothek direkt mit einer speziellen Hardware verbunden werden muss oder a aufruft) C/C++ - Bibliothek, die nativen Code verwendet).

  • Die Java-Plattform/Laufzeitumgebung ist plattformunabhängig in dem Sinne, dass dieselben Bibliotheken (Images, Netzwerk, Datei-E/A usw.) verfügbar sind und funktionieren auf allen Plattformen gleich. Dies geschieht absichtlich, damit Anwendungen, die diese Bibliotheken verwenden, auf jeder Plattform ausgeführt werden können. Zum Beispiel wissen die Java-Bibliotheken, die auf das Dateisystem zugreifen, dass Windows und Linux unterschiedliche Dateinamenpfadtrennzeichen verwenden, und berücksichtigen dies für Sie. Dies bedeutet natürlich, dass unter der Haube die Die Laufzeitumgebung verwendet plattformspezifische Funktionen, sodass Sie für jede Plattform eine andere JRE benötigen. Eine Liste einiger verfügbarer Plattformen finden Sie auf der Java Download-Site: - http://www.Oracle.com/technetwork/Java/javase/downloads/jdk-6u26-download-400750.html

  • Die JVM selbst (dh die Java Virtual Machine, die für das Kompilieren und Ausführen von JIT verantwortlich ist Java Bytecode) ist plattformunabhängig in dem Sinne, dass es auf vielen Plattformen verfügbar ist (von Mainframes bis hin zu Mobiltelefonen). Allerdings spezifische Versionen der JVM werden für jede zugrunde liegende Plattform benötigt, um unterschiedliche native Anweisungscodes und Maschinenfunktionen zu berücksichtigen (Sie können also keine Linux-JVM unter Windows ausführen und umgekehrt). Die JVM ist als Teil von Java Plattform-/Laufzeitumgebung wie oben.

Insgesamt ist Java wahrscheinlich so nahe an der tatsächlichen Plattformunabhängigkeit wie möglich, aber wie Sie sehen, wird unter der Haube noch einiges an plattformspezifischer Arbeit geleistet.

Wenn Sie sich an 100% reinen Java Code und Bibliotheken) halten, können Sie meiner Erfahrung nach auf Java als "effektiv" plattformunabhängig und allgemein zählen hält das Versprechen von Write Once Run Anywhere ein. Aber du solltest es trotzdem testen !!

34
mikera

Sie haben Recht, Plattformunabhängigkeit bedeutet, dass dasselbe Programm auf jeder Plattform (Betriebssystem) funktioniert, ohne dass Änderungen erforderlich sind.

Im Fall von Java läuft die Anwendung in einer Java Virtual Machine, die selbst nicht plattformunabhängig ist. Dies muss die Schnittstelle zwischen der tatsächlichen Maschine sein () Betriebssystem) und den Java Code, den Sie geschrieben haben.

Bei Videos, Bildern usw. handelt es sich um Dokumente, die Daten für Anwendungen sind und daher normalerweise von Natur aus plattformunabhängig sind.

5
ChrisF

Tatsächlich ist die Technik zur Erreichung der Plattformunabhängigkeit

  • Aufbau einer Zwischenplattform
  • Implementieren Sie die Zwischenstufe auf jeder der von Ihnen benötigten Plattformen (in Sprachen wie Java).

Oder Sie können Code schreiben und für jede Plattform kompilieren (C/C++). Meiner Meinung nach ist dies auch eine Art Plattformunabhängigkeit. Und Algorithmen können auf diese Weise als plattformunabhängig bezeichnet werden.

Sie haben Recht in Bezug auf echte Plattformunabhängigkeit für Dateitypen. Der Begriff Plattformunabhängigkeit wird jedoch normalerweise nicht auf Dateien angewendet.

1
Gulshan

Java ist eine objektorientierte plattformunabhängige Programmiersprache. Der Compiler javac kompiliert den Quellcode und erzeugt die Byte-Codesprache (universelle Sprache).

Diese Sprache ist für kein Betriebssystem verständlich, sie muss zuerst verarbeitet werden, und hier kommt ein spezielles ausführbares Programm (JVM) ins Spiel. Ein Interpreter der JVM liest den Bytecode zeilenweise und konvertiert die Bytecode-Anweisungen in eine maschinenspezifisch verständliche Sprache (letztendlich Binärcode). Der Bytecode ist also plattformunabhängig, aber der interpretierte Code ist maschinenspezifisch und wird in der Umgebung ausgeführt, in der die JVM installiert ist. Java Programme sind plattformunabhängig bedeutet, dass Java plattformunabhängig ist.

Der Slogan von Sun MicroSystems lautete WORA : Write Once Run Anywhere.

Da für die JVM ein Host erforderlich ist, kann ich Ihnen sagen, dass ein Java -Programm nicht plattformunabhängig ist. Auch die Java-Sprache hat vom Design her Anforderungen an das Dateisystem Dies führt zu kurzen Klassennamen, wenn das System eine FAT16-Partition verwendet:

class FOOBAR

ist das gleiche wie

class Foobar

und der Name

class AbstractPrinterFactory

ist unmöglich.

Im Vergleich dazu hat C nur sehr geringe Laufzeitanforderungen und kann daher eine höhere Portabilität bieten. Es ist weiterhin möglich, kleinere C-Programme auf wirklich Low-End-Geräte zurück zu portieren.

0
user877329