Zitat von
NecroWurst:
Soweit ich mich eingelesen habe, sollten Programme für Linux Distros ebenso unter OSX laufen, da beides im Prinzip auf Unix basiert.
Wenn das so schön einfach wäre, dann hätten wir doch alle einige Probleme weniger. Was du meinst bezieht sich ohnehin nur auf das aktuelle MacOS X (wenn ich mich nicht völlig irre). Die guten Motorola G3 Prozessoren dürften wohl teilweise auf <= MacOS 9 laufen. Also schon hier wäre die Aussage läuft auf dem Mac etwas zu allgemein.
Zitat von
Bernhard Geyer:
Und dann wäre auch noch das Problem das Mac's zu 99% Motorola-CPU's haben. Damit ist eine Neukompilierung für diese CPU's auf jedenfall nötig
Das stimmt so nicht ganz. Sind sicherlich keine 99% Motorola, die letzten CPUs vor Intel kamen noch von IBM. Läuft zwar auf's selbe hinaus (eine komplette andere Prozessorarchitektur), aber trotzdem.
Das ein Programm unter jedem Unix läuft kann natürlich auch nicht stimmen. Linux ist zwar genau wie MacOS X ein Unix Derivat, dass sind aber AIX, Solaris, BSD, ... auch. Dummerweise gibt es aber nun eine sehr sehr große Anzahl solcher Derivate und jede Menge verschiedener Architekturen. Unixe laufen auf x86 Hardware, auf PowerPC Prozessoren, auf Alphas und und und. Schon hier wirst du nicht um das ein oder andere neu Compilieren rum kommen.
Dann kommt noch das Problem hinzu, dass natürlich jedes System eine eigene
API verwenden wird. Selbst die Linux Distris schaffen es ja nicht eine gemeinsame Basis zu entwickeln, da laufen aber einige Versuche in die richtige Richtung.
Jedenfalls kannst du nicht davon ausgehen, dass die
CLX noch hält was versprochen wird. Die Linux Kernel entwickeln sich ordentlich schnell weiter und schon der 2.4 und der 2.6 haben einige gute Inkompatiblitäten (an die keiner die
CLX aktiv anpasst).
Was Qt und GTK+ angeht, so musst du bei beiden aufpassen. GTK kapselt
imho nur Elemente für das
GUI Design, die Funktionalität, die über das zeichnen hinaus geht ist dann wieder plattform-dependend (je komplexer die Funktionalität, desto wahrscheinlich dass du dabei ein Problem bekommst).
Bei Qt gibt es noch weitere Dinge die mit gekapselt werden (z.B. Netzwerk), dafür unterliegt Qt aber auch einem anderen Lizenzmodell (da müsstest du mal schauen). Zudem musst du natürlich auch hier auf jeder Plattform die entsprechenden Bibliotheken hinterlegen und einmal kompilieren.
Mono und .net ist sicherlich die von Borland unterstützte Alternative, aber Delphi .net dürftest du kaum in absehbarer Zukunft in Mono finden. Ich denke den Weg hat Borland auch schon mehr als deutlich eingeschlagen (immerhin erinnert das
BDS doch schon stark an VS). Man kann sicherlich über den Sinn streiten. Im Moment sieht's auch ganz gut für Mono aus, aber die Portierungen hängen leicht dem aktuellen .net Standard hinterher.
Eine nahezu indentische Alternative wäre dann noch das gute alte Java. Sowohl .net als auch Java benötigen auf der Zielplattform eine virtuelle Maschine, die den jeweiligen Code ausführt. Bei Java hast du (
imho) im Moment die größere Auswahl an Bibliotheken und IDEs, was natürlich daran liegt, dass es die Sprache schon etwas länger gibt. Auch die Weiterentwicklung von Java bringt weniger Inkopatiblität zu alten Versionen mit sich, als es .net mit dem Schritt von 1.x nach 2.0 tat (bei Java 1.4 zu 1.5/5.0 und demnächst 6.0 ist mir da keine bekannt).
Letztlich kann man auch hier wieder streiten welche Sprache toller ist, aber darum geht es nicht (dafür gibt es genug sinnlose Diskussionen). Was ich eigentlich nur sagen wollte ist, dass du mit den letzten Beiden Lösungen Code nur einmal schreiben musst und den überall ausführen kannst (wo eine VM läuft).
Alle diese Lösungen haben ihre Vor- und Nachteile. Bei den letzten beiden Lösungen (zu denen ich dir raten würde), hast du das Problem, dass du immer die Laufzeitumgebung mit liefern musst. Zudem wird der Code auf einer VM ausgeführt, dass könnte für zeitkritische Anwendungen ein Problem werden.
Bei Qt musst du wie gesagt gut mit den Lizenzen aufpassen. Zudem müsstest du natürlich die Anwendung auf jeder Zielplattform einmal linken.
Bei GTK+ musst du die GTK+ Bibliotheken auf der Zielplattform installieren und dann natürlich noch dein Programm für die jeweilige Plattform linken. Zudem hast du hier eine reine Grafikbibliothek und musst beim restlichen Code selbst darauf achten, dass der keine Plattformabhängigkeiten beinhaltet.
Gruß Der Unwissende