Plattformunabhängigkeit

standi

Lt. Junior Grade
Registriert
Nov. 2009
Beiträge
407
Hallo Leute,

hoffentlich nerve ich nicht. Ich denke, dass Plattformunabhängigkeit generell ein schwieriges Thema ist.

Laut Wikipedia ist etwas Plattformunabhängig, wenn etwas auf verschiedenen Computersystemen mit Unterschieden in Architektur, Prozessor, Compiler, Betriebssystem und weiteren Dienstprogrammen lauffähig ist.

Kann Software oder ein Smartphone-App denn plattformunabhängig sein? Gibt es nur Windows, Linuxs und MacOS?

Habe ich das richtig verstanden, dass Plattformunabhängigkeit bei einer Webanwendung auf den Browser bezogen ist? Sprich, die Webanwendung kann auf "allen" Browsern angezeigt werden. Wo jedoch die Webanwendung läuft (Apache, Tomcat, oder sonst etwas) ist egal?

Grüße
 
Klar kann Software das: Java versucht das zu erreichen, mit mehr oder minder großem Erfolg. Viele Skriptsprachen sind es auch: Perl, Python, PHP. Denen ist egal auf welcher Art Computer mit welchem Prozessor sie laufen. Von Smartphone bis Großrechner.

Ja, Webanwendungen sind plattformunabhängig da sie nur einen Browser brauchen um benutzt zu werden. Die Serverside Programme wie Tomcat, Apache, IIS, etc sind egal für den Nutzer.
 
Ja, Java-Programme sind zum Beispiel Plattformunabhängig, da man auf jedem System die Java Library installieren kann und somit kann man das Programm auf jedem OS ausführen. Anwendungen, die auf der .NET Bibliothek basieren können lediglich unter Windows ausgeführt werden. Für Linux gibt es Mono aber für MacOS ist mir keine Portierung bekannt.

Webanwendungen sind plattformunabhängig; man kann diese also von jedem Browser auf einem beliebigen Betriebsystem ausführen, sofern man die nötigen Plugins installiert hat.
Wo die Webanwendung server-seitig läuft ist nicht wirklich egal. Basiert es zum Beispiel auf dem .NET Framework, dann benötigt der Webserver diese Technologie.
 
standi schrieb:
Hallo Leute,

hoffentlich nerve ich nicht. Ich denke, dass Plattformunabhängigkeit generell ein schwieriges Thema ist.

Wieso nerven? Zwingt uns ja keiner, deinen Post zu lesen ;)

Ist nicht nur ein schwieriges, sondern auch ein interessantes Thema. Besonders wenn man sich darüber Gedanken macht, wie sich Plattformunabhängigkeit erreichen lässt und welche Nachteile dabei entstehen können. Beliebtes Beispiel ist z.Z. Minecraft. Alle Systeme, die die benötigte Runtime Environment betreiben können, sind in der Lage, das Spiel laufen zu lassen, wodurch sich die Macher das Portieren sparen können.
Dafür muss in diesem Fall aber die JavaVM mitlaufen, die den Speicherverbrauch massiv erhöht und somit absolut unangemessene Systemanforderungen mit sich bringt.

Prinzipiell sieht es in der Regel so aus, dass man diese Unabhängigkeit erreicht, dass die Software nicht als komplett durchkompilierter Maschinencode verbreitet wird (welcher absolut Systemabhängig ist), sondern als Source- oder Byte-Code, der dann von dem Rechner des Endanwenders passend zu seinen Möglichkeiten "fertig-kompiliert" (wie z.B. der Java Just-in-Time Compiler das zur Laufzeit tut) oder interpretiert wird (Siehe HTML).

Ich hoffe ich konnte hiermit ein wenig die grundlegenden Ideen und Problemstellungen zeigen :)
 
Laut dem Wikipedia-Artikel ist es möglich, die Frage ist nur was man als Plattform definiert. Ist es die Hardware? Betriebsystem? Oder zählt man auch diverse nötige genormte Schnittstellen zu PLattform? In dem letzten Fall wird es wohl schwer sein, da jede Software die Plattformunabhängig sein soll bestimmt Schnittstellen vorrausssetzt. Zählt man diese Schnittstellen zur Plattform dazu kann die Software gar nie unabhängig sein.

Oder anders: Eine Software ohne Vorraussetzungen, sprich eine Plattform auf der sie aufsetzen kann gibt es eigentlich nicht.
 
HueHang schrieb:
Wo die Webanwendung server-seitig läuft ist nicht wirklich egal. Basiert es zum Beispiel auf dem .NET Framework, dann benötigt der Webserver diese Technologie.

Ich denke es war gemeint, ob es dem Client egal ist, aus welchem Hause der Server stammt. Korrigiert mich, wenn ich da irre!
 
standi schrieb:
Kann Software oder ein Smartphone-App denn plattformunabhängig sein? Gibt es nur Windows, Linuxs und MacOS?

Nein, wirkliche Plattformunabhängigkeit gibt es gar nicht. Selbst Java ist nur so Plattformunabhängigkeit, wie es die VMs zulassen. Der ByteCode selbst ist Plattformunabhängigkeit, d.h. aber noch lange nicht, dass du ihn auf jeder Plattform ausführen kannst (keine VM, kein Ausführen).

Generell sagt man aber, dass Java plattformunabhängig ist, da es für sogut wie jede Plattform eine VM gibt.

Gleiches gilt auch für andere Sprachen, 100% Plattformunabhängigkeit gibt es nirgends (man sieht es aber nicht so eng ; ); sollte man auch nicht. )
 
Zuletzt bearbeitet: (Das Wörtchen ,ist' vergessen.)
nVentor schrieb:
Beliebtes Beispiel ist z.Z. Minecraft. Alle Systeme, die die benötigte Runtime Environment betreiben können, sind in der Lage, das Spiel laufen zu lassen, wodurch sich die Macher das Portieren sparen können.
Dafür muss in diesem Fall aber die JavaVM mitlaufen, die den Speicherverbrauch massiv erhöht und somit absolut unangemessene Systemanforderungen mit sich bringt.
nur kurz als Randinfo, ich will darauf eigentlich nicht groß eingehen: Das liegt an Minecraft und nicht Java ;)


nVentor schrieb:
Prinzipiell sieht es in der Regel so aus, dass man diese Unabhängigkeit erreicht, dass die Software nicht als komplett durchkompilierter Maschinencode verbreitet wird
Das stimmt für das Beispiel Java. Ich möchte aber nur nochmal festhalten, dass auch C(++)-Code platformunabhängig sein kann. Da sorgt eben der Compiler dafür für jede Plattform den Code in die richtige Maschinensprache zu übersetzen.


nVentor schrieb:
sondern als Source- oder Byte-Code, der dann von dem Rechner des Endanwenders passend zu seinen Möglichkeiten "fertig-kompiliert" (wie z.B. der Java Just-in-Time Compiler das zur Laufzeit tut)
was im Prinzip auch eine nette Sache ist, denn der JIT-Compiler auf dem Rechner kann das Programm dann sogar speziell für den eigenen Prozessor optimieren. Während ein normaler Compiler eine allgemeinere Wahl der Entscheidungen treffen muss, damit es auf möglichst vielen Systemen läuft.


nVentor schrieb:
oder interpretiert wird (Siehe HTML).
bitte lass HTML weg, das hat mit der Sache überhaupt nichts zu tun. HTML ist keine Programmiersprache sondern eine Auszeichnungssprache. HTML wird also nicht ausgeführt (auch nicht durch Interpretierung) sondern in seine Bestandteile zerlegt und dann eben durch einen Renderer auf Basis von Regeln dargestellt.


DasBoeseLebt schrieb:
Nein, wirkliche Plattformunabhängigkeit gibt es gar nicht.
Ja und nein. Also bei C würde ich schon sagen, dass es platformunabhängig ist, da es wirklich keinen Prozessor oder Mikrocontroller gibt, für den es keinen C-Compiler gibt.
Ach sch***, beim Schreiben fällt mir ein, dass Azul Systems einen Prozessor gebaut hat, der direkt nur Java Bytecode ausführen kann. Zumindest hätten wir somit das Beispiel, dass es keine Platformunabhängigkeit gibt, denn Java läuft auch nicht auf jedem Mikroprozessor (Beweis durch Gegenbeispiel).
Ich denke das sollte man wie "Soft- und Hard-Realtime" handhaben, Java und C sind Soft-Platformunabhängig, laufen also erstmal betrachtet wirklich auf fast jedem System. Mit harten Regeln betrachtet lässt sich dies aber widerlegen.
 
TrueAzrael schrieb:
Laut dem Wikipedia-Artikel ist es möglich, die Frage ist nur was man als Plattform definiert. Ist es die Hardware? Betriebsystem? Oder zählt man auch diverse nötige genormte Schnittstellen zu PLattform? In dem letzten Fall wird es wohl schwer sein, da jede Software die Plattformunabhängig sein soll bestimmt Schnittstellen vorrausssetzt. Zählt man diese Schnittstellen zur Plattform dazu kann die Software gar nie unabhängig sein.

Oder anders: Eine Software ohne Vorraussetzungen, sprich eine Plattform auf der sie aufsetzen kann gibt es eigentlich nicht.

ice-breaker schrieb:
nur kurz als Randinfo, ich will darauf eigentlich nicht groß eingehen: Das liegt an Minecraft und nicht Java ;)

Jein, Minecraft braucht an sich schon viel, aber die VM legt nochmal so 30% drauf :D

ice-breaker schrieb:
Das stimmt für das Beispiel Java. Ich möchte aber nur nochmal festhalten, dass auch C(++)-Code platformunabhängig sein kann. Da sorgt eben der Compiler dafür für jede Plattform den Code in die richtige Maschinensprache zu übersetzen.

Naja, damit ist der Source-Code unabhängig, aber das kompilierte natürlich absolut abhängig. Kommt jetzt drauf an, was man erreichen will. Ich bin davon ausgegangen, dass Programme gemeint sind, die ich so von einer Plattform zu anderen schleppen kann, ohne mir jeweils nochmal die passende Variante zu besorgen.

ice-breaker schrieb:
bitte lass HTML weg, das hat mit der Sache überhaupt nichts zu tun. HTML ist keine Programmiersprache sondern eine Auszeichnungssprache. HTML wird also nicht ausgeführt (auch nicht durch Interpretierung) sondern in seine Bestandteile zerlegt und dann eben durch einen Renderer auf Basis von Regeln dargestellt.

Ja ok, ich geb zu, das war dämlich ausgedrückt, aber ich hatte da noch JavaScript im Hinterkopf. Das führt ja auch wunderbar Programmcode aus, der höchstens vom Browser abhängig ist. Nagut, war vielleicht ein doofes Beispiel.

ice-breaker schrieb:
Ja und nein. Also bei C würde ich schon sagen, dass es platformunabhängig ist, da es wirklich keinen Prozessor oder Mikrocontroller gibt, für den es keinen C-Compiler gibt.
Ach sch***, beim Schreiben fällt mir ein, dass Azul Systems einen Prozessor gebaut hat, der direkt nur Java Bytecode ausführen kann. Zumindest hätten wir somit das Beispiel, dass es keine Platformunabhängigkeit gibt, denn Java läuft auch nicht auf jedem Mikroprozessor (Beweis durch Gegenbeispiel).
Ich denke das sollte man wie "Soft- und Hard-Realtime" handhaben, Java und C sind Soft-Platformunabhängig, laufen also erstmal betrachtet wirklich auf fast jedem System. Mit harten Regeln betrachtet lässt sich dies aber widerlegen.

Hehe, ja. Das ist natürlich wieder Definitionsfrickelei. Kommt halt wirklich darauf an, worauf man sich jeweils bezieht und was man haben will. Und das wollte ich in meinem ersten Post auch vermitteln, dass es verschiedene Ansätze gibt, eben weil das auch kontextabhängig betrachtet werden muss. Das ist auch der Grund, warum man da so herrlich aneinander vorbeireden kann. Das Problem lässt sich einfach nicht so abstrakt diskutieren. :)
 
@nVentor: Darf ich fragen warum du mich zitiert hast?

@ice-breaker: Fertig kompilierte Dateien sind nie plattformunabhängig, außer einer schafft es Code für alle, wirklich alle möglichen Plattformen nativ zu coden und müsste es dann noch schaffen den jeweils richtigen Code zu laden. Das wäre aber ein überdimensioniertes Monster von Programm. Ich vermute allerdings das dieses Beispiel Theorie bleiben wird.

C-Programme laufen aber nur auf dem System für das sie kompiliert wurden und sind daher Plattformabhängig. Java läuft zwar auf einigen Systemen, aber benötigt dafür eine eigenen Softwareplattform die wiederrum an die Hardware angepasst sein muss.
 
Ich denke es war gemeint, ob es dem Client egal ist, aus welchem Hause der Server stammt. Korrigiert mich, wenn ich da irre!

Ich habe es aus Sicht des Clients, aber auch als Sicht der Software gemeint.

Aus Sicht des Clients muss die Software auf "allen" Browsern laufen.
Aus Sicht der Software ist es für mich noch etwas unklar. D.h., PHP wäre Plattformunabhängig, aber JSP nicht, da es nur mit einem Server läuft, der auch java kann. Bsp. Glassfish oder Tomcat?

Grüße
Ergänzung ()

Fertig kompilierte Dateien sind nie plattformunabhängig, außer einer schafft es Code für alle, wirklich alle möglichen Plattformen nativ zu coden und müsste es dann noch schaffen den jeweils richtigen Code zu laden. Das wäre aber ein überdimensioniertes Monster von Programm. Ich vermute allerdings das dieses Beispiel Theorie bleiben wird.

Genau. Beispiel ein Buchhaltungssoftware soll plattformunabhängig sein. Wo zieht man hier die Grenzen. Windows, Linux, Mac OS. Oder müssen auch alle verschiedenen Windows Versionen unterstützt werden? (Hardware nicht betrachtet)
 
TrueAzrael schrieb:
@nVentor: Darf ich fragen warum du mich zitiert hast?

Klar darfst du das. Ich habe dich zitiert, weil ich deine Einwände interessant fand und darauf eingehen wollte. Macht man doch so bei Diskussionen in diesem Forum oder nicht? War nicht bös' gemeint, falls du das denkst. :)
 
TrueAzrael schrieb:
Fertig kompilierte Dateien sind nie plattformunabhängig, außer einer schafft es Code für alle, wirklich alle möglichen Plattformen nativ zu coden und müsste es dann noch schaffen den jeweils richtigen Code zu laden.
Das ist dann wieder die Sache mit der Definition der Platformunabhängigkeit ;) Muss ein Kompilat auf allen Systemen laufen oder reicht es, wenn ich aus dem Sourcecode ein Kompilat für jedes System machen kann. Die 2. Definition wird da häufiger verwendet, die 1. ist natürlich auch richtig, aber imho auch wider viel zu strikt gesehen.

TrueAzrael schrieb:
C-Programme laufen aber nur auf dem System für das sie kompiliert wurden und sind daher Plattformabhängig.
Falsch. C-Programme laufen auf dem System für das sie kompiliert wurden, du kannst die Software entweder für dein System kompilieren oder auch für ein anderes. So kannst du z.b. auch mit mingw auf einem Linux ein Programm für Windows kompilieren.

standi schrieb:
Aus Sicht des Clients muss die Software auf "allen" Browsern laufen.
Aus Sicht der Software ist es für mich noch etwas unklar. D.h., PHP wäre Plattformunabhängig, aber JSP nicht, da es nur mit einem Server läuft, der auch java kann. Bsp. Glassfish oder Tomcat?
Ich glaube dir hier ist das Client-Server-Modell nicht klar ;)
PHP nud JSP sind serverseitige Sprachen, die laufen also auf einem Server und schicken dir dann über HTTP das Ergebnis. Ob der Server Windows, Linux oder Solaris ist, spielt keine Rolle.
Generell hat das Client-Server-Modell mit Platformunabhängigkeit auch überhaupt nichts am Hut, du driftest hier also in die falsche Richtung ab. Die einzige Parallele zur Platformunabhängigkeit bei Client-Server-Modell ist die Datenkommunikation, denn ich kann über TCP/IP mit anderen Platformen kommunizieren.
 
Ich glaube dir hier ist das Client-Server-Modell nicht klar
PHP nud JSP sind serverseitige Sprachen, die laufen also auf einem Server und schicken dir dann über HTTP das Ergebnis. Ob der Server Windows, Linux oder Solaris ist, spielt keine Rolle.
Generell hat das Client-Server-Modell mit Platformunabhängigkeit auch überhaupt nichts am Hut, du driftest hier also in die falsche Richtung ab. Die einzige Parallele zur Platformunabhängigkeit bei Client-Server-Modell ist die Datenkommunikation, denn ich kann über TCP/IP mit anderen Platformen kommunizieren.

Okey, dann eine Gegenfrage. Ich will von dir ein Webanwendung programmiert haben, die auf allen Servern (also plattformunabhängig) laufen. D.h., ich darf solch eine Frage erst garnicht stellen :-)
 
Doch, du darfst die Frage stellen, aber die Frage hat eben nichts mit dem zu tun, was du eben gefragt hast ;)
JSP ist Java, läuft also auf allen Systemen, so wie PHP. Das Client-Server-Modell ist dabei irrelevant. Du willst ja nur, dass die Software (die Webanwendung) auf deinem Server läuft.

Der Browser ist da wieder etwas ganz anderes. Da geht es darum, dass deine Ausgaben, die die Webanwendung macht von einem Client interpretiert werden. Aber da ist dir die Plattform egal. Du musst nur darauf achten, dass die Browser bestimmte Funktionen können, wenn du sie in dein HTML/JavaScript/CSS einbaust. Aber auf welcher Plattform der Chrome läuft ist dir total egal. Aber wie gesagt, diese Frage driftet von dem Thema der Plattformunabhängigkeit ab. Da es hier nun in die Richtung geht, ob ein Endgerät eine bestimmte Funktion hat. Und wenn nicht wie du die Seite dann anders bauen musst. Das fällt aber nicht mehr unter den Begriff Plattformunabhängigkeit, da dessen Idee ist, dass ein Programm auf verschiedenen Betriebssystemen, Prozessoren usw. laufen soll.
 
Zuletzt bearbeitet:
@nVentor: Hab es auch nicht böse aufgefasst, allerdings hatte ich bei dem von dir geschriebenen keinen Bezug zu meinem Post gesehen und dachte du hast etwas beim schreiben vergessen.

@ice-breaker: Klar ist es eine Definitionssache, das schrieb ich schon in meinem ersten Post, aber absolut plattformunabhängig, sprich eine Software die ohne entsprechenden Übersetzer odg. auf allen existenten Systemen lauft wird es wohl nie geben. Auch PHP uns JSP/Java laufen nur auf Servern die diese Sprachen verstehen und übersetzen können. Entwickle ich nun eine neue Architektur und schreibe mein eigenes Betriebssystem wird wohl keine der bisherigen Software darauf laufen, ob nun C, Java, PHP oder sonstiges, da einfach die Schnittstellen/Übersetzer als Vorraussetzung fehlen. Plattformunabhängig ist man nur wenn es die entsprechenden Softwareschnittstellen für deine Plattformunabhängige Anwendung gibt und damit wäre ich ja wieder von der "Softwareplattform" abhängig. Geht aber wohl zu sehr ins philosophische und im allgmeinen gilt Java als plattformunabhängig.

@Standi: Deine Webanwendung läuft auf allen Servern die entsprechende Software (Java/PHP/udg.) vorinstalliert haben. Welchen Client der Betrachter dann nutzt ist dir egal, solange ein aktueller Browser drauf läuft. Das liegt aber dann nicht an Plattformunabhängigkeit sondern an den genormten Schnittstellen im WWW.
 
@TrueAzrael: Da es wirklich echte Plattformunabhängigkeit nicht gibt, hatte ich eben überall die weichere "übliche" Definition genutzt. Dachte das sei klar gewesen, werde ich das nächste mal wohl deutlicher herausstellen müssen.
 
Deine Webanwendung läuft auf allen Servern die entsprechende Software (Java/PHP/udg.) vorinstalliert haben.

Ich hatte da ein wenig falsch um die Ecke gedacht gehabt und habe vergessen, dass für die entsprechende Websoftware (Java oder JSP), die Vorbedingung/nötige Software wie JVM noch existiert, die wiederum "überall" läuft.


@TrueAzrael: Da es wirklich echte Plattformunabhängigkeit nicht gibt, hatte ich eben überall die weichere "übliche" Definition genutzt. Dachte das sei klar gewesen, werde ich das nächste mal wohl deutlicher herausstellen müssen.

Genau. Und wenn man hart definiert, dann kann eine Software nicht überall laufen.
Wenn man nicht aus Sicht der Programmierung, sondern ein Fertigprodukt anschauen, bsp. eine Buchhaltungssoftware, dann ist es eh schwierig zu sagen, das Programm wäre Plattformunabhängig.


War auch klar, allerdings wollte ich es Standi aufzeigen, dem das vermutlich nicht klar ist.

Danke euch allen.
 
standi schrieb:
Wenn man nicht aus Sicht der Programmierung, sondern ein Fertigprodukt anschauen, bsp. eine Buchhaltungssoftware, dann ist es eh schwierig zu sagen, das Programm wäre Plattformunabhängig.

Aber diese Sicht ist irgendwie "komisch". Wenn du die Buchhaltungssoftware für Windows installierst, wird sie natürlich nur auf Windows laufen.
Wenn du aber die Software kaufst und auf der CD sind Versionen für Windows, Linux und Mac OS X drauf, wie sieht das ganze dann aus...
Du kannst die Software dann auf jeder (verbreitenden) Plattform nutzen, somit ist die Buchhaltungssoftware dann Plattformunabhängig, nur eben nicht eine Ausprägung - z.B. die Windows-Version.

Wie gesagt, der Begriff der harten Plattformunabhängigkeit ist zwar eigentlich komplett richtig, hat aber nichts mit dem Begriff zu tun, wie er mittlerweile genutzt wird bzw. überhaupt je genutzt wurde.
 
Zuletzt bearbeitet:
Zurück
Oben