Autor Thema: Plattformübergreifende API  (Gelesen 17185 mal)

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« am: 02. June 2005, 17:49 »
Hi,

kann mir jemand mal sagen, warum niemand sich ans Werk macht, eine Art API für alle OSs zu entwickeln? Also ein Stück Software oder Treiber, das man immer gleich ansteuert und das dann die angeforderten API-Calls auf die richtigen Commands für das grade aktuelle OS ummünzt und durchstellt. Dann könnte man für das Ding Programme schreiben, die auf jedem OS gingen, wo das Ding läuft, nichtmehr an ein OS gebunden sind und auch nicht für jedes OS neu compiliert werden müssten...

J!N
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

jeb

  • Beiträge: 341
    • Profil anzeigen
    • http://www.jebdev.net
Gespeichert
« Antwort #1 am: 02. June 2005, 17:54 »
Die Idee einer LowlevelAPI finde ich gut. Doch denke ich das jeder User gerne seine eigene API schreibt. Man könnte sie dazu kompatibel machen. Das wär dann aber super, da bei jedem neuen OS gleich eine Reihe Programme zur Verfügung ständen. Ich würde es mit einer Art DLL machen, die die API funktionen beinhaltet und auf jedem System gleich heisst oder in einer Variable definiert ist. Somit kann jeder User die api funktionen individuell an sein System anpassen. Jeder hat ja auch seine eigene GUI.

mfg, jeb

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #2 am: 02. June 2005, 18:04 »
Ich meine eher einen Aufsatz/Treiber für OSs wie Linux und Win und BSD und SolarOS und so weiter, aber für uns währe das ja im Prinzip auch einsetzbar... Man müsste halt alle API-Calls an diese API an die von den Systemen weiterleiten, somit hätte man noch mehr Abstraktion.
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 02. June 2005, 18:06 »
O_O Da gibts doch schon wirklich sehr viele Versuche... Java, .NET sind doch im grunde nur sowas. Aber auch spezifischere Sachen wie die SDL oder so gehören dazu.

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #4 am: 02. June 2005, 18:30 »
Jo, aber alle nicht das wahre, vermutlich, weil:
1. Java ne eigene Sprache ist und kein Interface,
2. .NET meines Wissens nur für Win vorhanden ist,
3. SDL eine Lib ist, mit der man trotzdem compilieren muss, und die nicht für alle sprachen da ist.

Was ich meine ist ein Treiber, auf den man zugreift, und der dann die API-Calls umstellt und umbaut für das gerade eingesetzte OS. Das ganze währe dann keine eigene Sprache, für alle Sprachen verwendbar und für jedes OS vorhanden, für das es portiert wird, was mit C funktionieren könnte. Man müsste dann nur die Lib dazu einbinden bzw. die STDLIB umbinden, dass sie auf diese modifizierte geht und dieses Stück Software ansteuert, das dann wiederum den CALL an die richtige API weiterleitet und gegebenenfalls an diese anpasst. Somit schreibst du ein Programm in einer Sprache, kompilierst es mit der modifizierten STDLIB und greifst damit auf das Treiberchen zu. Und der leitet dann deine Aufrufe an die lokale API weiter, sodass das Ding überall laufen würde, wo das Treiberchen im Hintergrund aktiv ist. Welches System läuft und für welches es kompiliert ist währe egal, hauptsache der Treiber geht. Somit hätte man noch eine Stufe mehr Abstraktion hinter dem ganzen.
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 02. June 2005, 18:39 »
Es gibt Projekte die .NET auf andere Systeme portieren wollen.

Es gibt ja teilweise einheitliche APIs, zum Beispiel POSIX, welches aber eigentlich für UNIX gedacht ist.

MS wird wohl keine einheitliche API einbauen, da sie ja damit Marktanteile verlieren würden, also ist das ganz utopisch ^^.
Man könnte natürlich so ein Interface selbst schreiben, dann würden aber nur wenige Programme es verwenden. Man könnte ja mal Librarys schreiben die POSIX-Funktionen unter Windows bereitstellen, dann könnte man einige UNIXs Programme unter Windows laufen lassen.

DDR-RAM

  • Beiträge: 184
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 02. June 2005, 18:56 »
Es gibt da ein Problem:
jedes OS hat sein eigenes binary-format.

Golum

  • Beiträge: 96
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 02. June 2005, 19:11 »
Wahrscheinlich ist es möglich so eine Lib für fast alle Betriebssysteme zu machen. Nur wird Windows es nie so unterstützen das du nichts dazu compilieren etc. musst ^^

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 02. June 2005, 20:18 »
CORBA?

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 02. June 2005, 20:19 »
Zitat von: joachim_neu
kann mir jemand mal sagen, warum niemand sich ans Werk macht, eine Art API für alle OSs zu entwickeln?

Die Idee ist ja nicht neu. Das Problem ist einfach, dass diese API in eben diesen Systemen implementierbar sein muss und von den Nutzern und Programmierern auch akzeptiert werden muss. Es gibt tausende Betriebssysteme und jedes hat sich auf etwas spezialisiert und sich dadurch einen gewisse Stellung und einen gewissen Ruf gesichert. Niemand hat interesse das für ein utopisches Wollmilchsau-Projekt aufs Spiel zu setzen, weil immer die Gefahr besteht, das der Schuss nach hinten losgeht und der eigene Ruf ruiniert ist, andere es besser machen oder was auch immer passieren kann.

Das Problem ist auch - wie ich bereits gesagt habe, - dass es dann von einer gewissen Menge Programmieren umgesetzt werden muss und diese das dazu vorher akzeptieren müssen. Gerade bei Betriebssystem prallen aber Ideologien aufeinander, die verschiedener nicht sein könnten. Hier auf einen gemeinsamen Nenner zu kommen dürfte äußerst schwierig sein und, ob dieser gemeinsame Nenner dann noch eine brauchbare Lösung darstellt, ist fraglich.

Des Weiteren müssen manche Betriebssysteme, wenn sie dann die API unterstützen wollen, arge verrenkungen machen (umständlich Aufrufe in das eigene Format umwandeln, in mehrere aufsplitten, mehrere zusammenfassen, parameter konvertieren). Das ganze wird arg langsam und buggy.

Das Apache Portable Runtime Projekt will (wenn ich das richtig verstanden hab) so eine API umsetzen.

Zitat von: joachim_neu
2. .NET meines Wissens nur für Win vorhanden ist

Mit dem Mono-Projekt ist .NET auch auf Linux und (wahrscheinlich) anderen Plattformen verfügbar.

Zitat von: SSJ7Gohan
Es gibt ja teilweise einheitliche APIs, zum Beispiel POSIX, welches aber eigentlich für UNIX gedacht ist.

MS wird wohl keine einheitliche API einbauen, da sie ja damit Marktanteile verlieren würden, also ist das ganz utopisch ^^.

Windows 2000 und NT unterstützen auch POSIX und OS/2. Windows XP und 2003 unterstützen POSIX und OS/2-API - aus welchen Gründen auch immer - nicht mehr direkt. Die können dafür POSIX per Windows Services for UNIX nachrüsten. Also so ganz inkompatibel ist Windows nicht ;)
Dieser Text wird unter jedem Beitrag angezeigt.

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 02. June 2005, 23:20 »
Zitat von: SSJ7Gohan
Man könnte ja mal Librarys schreiben die POSIX-Funktionen unter Windows bereitstellen, dann könnte man einige UNIXs Programme unter Windows laufen lassen.
Gibt es, heisst cygwin. http://www.cygwin.com.

Windows 2000 unterstuetzt einen Subset der OS/2-Api von Haus aus, aber nicht die der WPS. Somit also nur einen Teil aller Textmode-Apps; so als Tribut an verflossene Windows 3.x-Zeiten?

Sämtliche freien Betriebssystem könnten theoretisch eine und eine einzelne API unterstuetzen. Dann liefe Software von (a) auch auf (b) oder auf (c), der Treiber xyz liefe auf allen Systemen...toll, nicht?
Aber wozu dann noch eigenständige Systeme, wenn doch alle gleich funktionieren?

Svenska

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #11 am: 03. June 2005, 16:49 »
POSIX und Konsorten würde ich persönlich aber abschaffen - POSIX wegen Konzepten wie fork() usw. unter Konsorten würde ich mal z.B. BSD Sockets mal packen (das ewige hin- und hergecaste, oh man). Und einen echten Standard für GUI Programmierung gibt es in diesem Umfeld nicht.

Deswegen würde ich mir eher die Frage stellen: Warum macht niemand eine GUTE plattform übergreifende API, und ich würde sagen, da käme man schon weit wenn man Java oder auch .NET für C++ abkupfern würde.
*post*

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #12 am: 13. February 2006, 21:09 »
Hallo,

Ich bin gestern nochmal über ein Gespräch auf den Gedanken einer solchen globalen API gekommen und wollte fragen, ob hier in der Community allgemeines Interesse besteht, eine Art "LowlevelAPI" auszuarbeiten, die bestimmte Standardfunktionen (aus allen Bereichen, z.B. Speicherverwaltung, MultiTasking, IPC, Treiberkommunikation, ...) und deren Parameter sowie ein Interupt zum Aufruf definiert.
Man könnte die API in mehreren Schichten/Versionen/Ausführungen standardisieren. Version 1.0 kann nur ganz grundlegende Befehle, Version 2.0 kann schon mehr und so weiter. Die jeweils höhere Version beinhaltet alle Versionen drunter plus Erweiterungen, ist also abwärtskompatibel. So könnte man Anwendungen schreiben und je nach verwendeten Funktionen sagen "Das Teil braucht LowlevelAPI Version 1.0." oder es braucht Version 2.0 oder so. Man wüsste dann auch, dass alle OSs, die eine höhere Versionsnummer implementiert haben das Programm auch benutzen können. Außerdem kann man dann z.B. schon mit recht wenig Aufwand alle Anwendungen der Stufe 1.0 ausführen.

Gruß,

Joachim
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #13 am: 13. February 2006, 23:23 »
Nun, auf jeden Fall muss man wenn so was NICHT wie bei POSIX machen und nur das standardisieren was eh alle gleich machen, also nur die Hälfte und die andere Hälfte macht jeder wie er will.
*post*

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #14 am: 14. February 2006, 14:50 »
Ziel ist es, so viel wie nötig und so wenig wie möglich zu standardisieren.
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

 

Einloggen