Läuft jede java software auf überall wo java läuft?

5 Antworten

Ja, Java ist auch in der Praxis extrem portabel, sofern tatsächlich nur die Standard-APIs spezifikationsgemäß verwendet werden.

Als Entwickler muss man aber auch selbst mitdenken. Wenn die eigene Applikation etwa betriebssystemspezifische Annahmen macht (Klassiker: "es gibt ein Verzeichnis namens C:\Users") und dann auf anderen Betriebssystemen laufen soll - tja, dann kann die JVM auch nicht zaubern.

Ebenso gibt es mitunter Programme, die betriebssystem- bzw. prozessorspezifischen Binärcode über JNI einbinden. Auch hier ist der Entwickler in der Pflicht, das entweder nicht zu tun oder für jede Architektur die passenden Binaries einzupacken.

Hey,

das ist das unglaublich tolle an Java, es läuft überall. Das liegt daran, wie Java kompiliert wird.

Wenn du ein Java Programm kompilierst (also die .jar Datei erstellst), wird der Code nicht direkt in Maschinensprache übersetzt, sondern in sogenannten Byte Code. Erst die auf dem Endgerät installierte (und für den Prozessortyp optimierte) JVM übersetzt den Byte Code (den jede JVM lesen kann) in Maschinensprache.

Mfg Jannick (L1nd)

Woher ich das weiß:Hobby

BeamerBen  22.08.2021, 16:50

Manche sagen toll andere dämlich, da scheiden sich die Geister.

0
JanMarcel01  22.08.2021, 16:54
@BeamerBen

Ich persönlich mag Java und natürlich gibt es auch Gründe gegen Java.

0

Im Grunde läuft Java überall, also du musst es nicht für jede spezifische Architektur umschreiben und neu kompilieren. Da jedes Betriebssystem aber zum Teil gewisse Funktionen nicht unterstützt, kann es dort zu Problemen kommen, aber halt auch nur bei ziemlich spezifischen Dingen.

Woher ich das weiß:Berufserfahrung – Informatiker Applikationsentwicklung

bleteR  22.08.2021, 15:35

Zum Beispiel Anzeige vom Akkustand. Das funktioniert auf einer set top box natürlich nicht.

0
Lezurex  22.08.2021, 15:37
@bleteR

Wenn das Gerät keinen Akku hat, ergibt das Sinn, ja.

0

Nein, es läuft nicht überall.

Die Jar kannst du ausführen, aber es kann sein, dass es für manche Plattformen nicht das neuste Java gibt, obwohl es Java an sich generell gibt. Wollte man ein Java Programm auf einem Raspberry pi laufen lassen welches ich geschrieben hatte, da gabs gerade dieses Problem. Musste den Code dann schön backporten auf ne ältere Version.

Außerdem kann es halt schon mal irgendwie sein das man Plattformspezifische Sachen wie Unterschiede in den Pfaden nicht beachtet. Oder man hat eine nicht-java Dependency die es auf der Ziel Plattform nicht gibt.

Obwohl es das Konzept von Java ist, dass eine Jar theoretisch überall läuft, und Java ist bestimmte auch nicht die schlechteste Wahl wenn das ein requirement ist, gibt es also genügend Gründe warum das nicht unbedingt immer so ist wenn die Programmierer nicht darauf achten.

Woher ich das weiß:Berufserfahrung – Software Entwickler / Devops

Die Java Runtime Environment (JRE) bzw. die darunterliegende JVM kümmert sich darum, dass jedes Java-Programm auch auf jeder JRE-kompatiblen Maschine läuft. Die Ausführung erfolgt also maschinenunabhängig. Ist eben der große Vorteil (und zugleich Nachteil, da eben die JRE installiert werden muss) von Java.

Gewiss kann man als Entwickler auch irgendwie an der JRE „vorbei“ programmieren, sodass in der Praxis keine Ausführung auf allen JRE-kompatiblen Maschinen möglich wäre, aber vorkommen tut sowas eigentlich nicht.

Woher ich das weiß:Berufserfahrung – Inhaber einer App-Agentur & 15+ Jahre Programmiererfahrung