Ich habe Fragen zu echter Cross-Plattform-Entwicklung und wenn es möglich ist, ONE-Plattform zu verwenden, um Software zu entwickeln.
Ich habe ein paar Anwendungen, die ich schreibe, die auf OS X, Windows und Linux arbeiten. Sie alle verwenden systemeigene Plattform-Toolkits mit einigen geteilten Plattformen. Ich muss auf jeder Plattform booten, auschecken, kompilieren, etc.
Ich habe in der Vergangenheit GUI-Toolkits wie QT ausprobiert (ich habe eine kommerzielle Lizenz für Win, Mac, Linus gekauft, aber sehr teuer und zahlte es Jahr für Jahr hart). Ich habe versucht WxWidgets, Entwicklung bewegt sich langsam.
Ich denke also darüber nach, wie es möglich ist, eine einzige Plattform zu betreiben und sich für andere Plattformen zu kompilieren, damit ich meine Produkte von einer einzigen Plattform aus erstellen kann.
Ich bevorzuge OS X, gibt es eine Möglichkeit, Apps für OS X, Windows, Linux von OS X zu schreiben, wo ich nur auf jeder Plattform testen muss. Ich habe Informationen über Cross-Compiler, Stub-Compiling usw. gefunden.
Hat jemand irgendwelche Gedanken? Ist das überhaupt möglich? Würde jemand eine Tötung machen, die solch ein Biest verursacht?
In meinem Unternehmen verwenden wir das Mozilla Framework , um plattformübergreifende Wörterbuchprodukte zu entwickeln. Diese Anwendungen basieren auf dem Gecko / Necko Browser und die meiste Entwicklung erfolgt über Javascript, HTML, CSS, XSL, XUL , ... Natürlich musste unsere Homebrew-Suchmaschine kompiliert werden zu den drei Plattformen (mit etwas anderem Code, der zuerst in JS gemacht wurde und dann aus Geschwindigkeitsgründen in moz 'C ++ portiert wurde).
Am Ende haben wir eine vernünftig plattformübergreifende Lösung: Unsere Entwickler arbeiten meist wie Power-Web-Entwickler (denken Sie Client- und Server-Seite gleichzeitig). Da der Gecko auf den drei Plattformen derselbe ist, wissen wir, dass er vorhersehbar aussehen und sich genauso verhalten wird (außer wenn es Bugs gibt, aber die Plattform ist in dieser Hinsicht nun ziemlich ausgereift).
Unser R & amp; D weiß, wie man langsamen JavaScript-Code in einen eher schnellen portablen C ++ - Code portiert (Sie verwenden Mozilla-Code mit der NSPR-Bibliothek, einer plattformübergreifenden Bibliothek). Das Testen muss jedoch immer auf der dreien Plattform durchgeführt werden, obwohl Sie mit der Zeit und der Erfahrung wissen, was wo passieren wird (Font-Unterstützung, Audio-Unterstützung, Flash-Unterstützung) ...
Heute sollten Sie sich wahrscheinlich XULRunner ansehen, das ist wirklich der Mozilla ohne echte Browserschnittstelle ( im Jahr 2002 mussten wir den Mozilla Browser demontieren, um ihn in unserem ersten neu zu streichen Produktfarbe ). Natürlich funktioniert es gut für einfache Anwendungen, aber wenn Sie OpenGL, 3D Audio und andere raffinierte Dinge machen wollen, wird XULRunner zu begrenzt erscheinen.
Ich glaube, Blizzard hat einen plattformübergreifenden Rahmen für diese Art von Dingen ...:)
Viel Glück!
Pierre.
Der Versuch, Anwendungen auf einer einzigen Plattform zu entwickeln, die auf vielen Plattformen verwendet wird, ist kein guter Ansatz. Im besten Fall werden Sie Anwendungen erstellen, die sich Benutzern der Plattformen fremd vorkommen, für die Sie nicht entwickelt haben.
Wahrscheinlicher ist, dass Sie in Bereichen, die Sie nie aufgegeben haben, auf subtile Kompatibilitätsprobleme stoßen. Java ist wahrscheinlich der beste Weg zu gehen, wenn Sie diese Route gehen wollen. Cross-Compiling führt zu automatisch generiertem Code, der ein Albtraum für Debugging und Wartung sein wird.
Sicherlich können Sie in einigen Fällen Tools für die Portierung verwenden, aber ich denke nicht, dass dies ein Problem ist, für das Sie im Allgemeinen eine automatisierte Lösung bereitstellen können.
Nun, um ehrlich zu sein, die einzige Möglichkeit, eine App plattformübergreifend auf einmal zu erstellen, ist die Verwendung von Java, aber es erfordert eine ziemlich lange Laufzeit, die zuerst installiert werden muss.
Wenn dies jedoch keine Option ist, würde ich empfehlen, die jüngsten Entwicklungen in Qt im Auge zu behalten - sie stehen jetzt (oder sollten bald) unter der LGPL, was bedeutet, dass Sie wahrscheinlich nicht mehr dafür bezahlen müssen . Die Verwendung von GCC mit Qt, wie ich festgestellt habe, funktioniert perfekt beim Cross-Compilieren auf verschiedenen Plattformen, solange Sie nur Qt's Klassen / Code / Objekte verwenden und sicherstellen, dass kompilierter Nicht-Qt-Code kompiliert werden kann plattformübergreifend.
Sie erwähnen keine spezielle Programmiersprache (aber ich rate C oder C ++ wegen der GUI-Toolkits), also ist es schwer, eine gute Antwort auf das zu geben, was Sie tatsächlich fragen.
Wenn Sie "echte" Cross-Plattform wollen, würde ich zuerst überlegen, ob es möglich ist, Ihr Problem mit einer Sprache zu lösen, die weniger plattformgebunden ist. Python, Java und viele andere erlauben es Ihnen, auf einer Plattform zu schreiben und auf vielen zu laufen.
Wenn Sie immer noch C / C ++ verwenden möchten, bietet GCC Ihnen die Möglichkeit des Cross-Compilierens, und wenn Sie das mit QT kombinieren (was bald unter der LGPL verfügbar sein wird), sollten Sie etwas zum Laufen bringen können / p>
Java hat versucht, einmal zu schreiben, irgendwo zu laufen. Es funktioniert in einigen Situationen gut, aber es gibt zu viele "einzigartige" Dinge in einem Betriebssystem. GCC bot die Möglichkeit, Anwendungen kompilieren zu können, aber Sie stoßen auf die gleiche Art von Problemen. Der Code wird nur eine bessere Leistung haben. Der RIA-Ansatz scheint zu funktionieren, fühlt sich aber nicht wie eine native Anwendung an.
Auch wenn Sie ein plattformübergreifendes GUI-Toolkit verwenden, werden nicht alle Ihre plattformübergreifenden Probleme entfernt. Es gibt schließlich mehr als eine GUI für eine App. Cross Compiling wird niemals alle Probleme erfassen, die ein nativer Build auch erfasst. Wenn Sie mehrere Plattformen unterstützen, müssen Sie auf jeder Plattform mindestens testen . Aber hoffentlich können Sie native Builds mit allen aktivierten Warnungen ausführen, zusätzlich zum Testen .
In den vergangenen Monaten habe ich ein paar großartige Videos gefunden, die dieses Thema der plattformübergreifenden Entwicklung untersuchen. Ich hoffe, Sie finden sie auch nützlich.
QTCreator
FlexBuilder
Mono / MonoDevelop
Ich hatte persönlich Erfolg mit Silverlight / MacOS X
RealBasic
Für die plattformübergreifende Entwicklung können Sie Phone Gap, Appcelerator (Titanium), Corona ... verwenden. Dies alles bietet ein Framework, das auf JavaScript basiert und schließlich auf verschiedenen Plattformen laufen kann. Was ich benutze, ist Titanium für die mobile Entwicklung, was uns erlaubt, Anwendungen mit nativen Codes zu entwickeln .... (was ein sehr guter Vorteil ist). Phone Gap bietet eine Web-App, die im Allgemeinen nicht nativ ist ... Diese Software wird für die Entwicklung von plattformübergreifenden Unterstützung verwendet ... mit Unterstützung für Windows, Linux und Mac OS.
Aufgrund meiner persönlichen Erfahrung glaube ich, dass Sie Java verwenden sollten: Sie werden viele Kopfschmerzen vermeiden.
Sie entwickeln auf jeder Plattform, die Sie mögen und die Sie auf allen anderen Plattformen bereitstellen, ohne dass Sie für jede Zielplattform kompilieren müssen, wie Sie bereits erwähnt haben.
Zum Beispiel entwickle ich unter Linux, ich treffe nur einmal "kompilieren" und die resultierende Datei kann überall ausgeführt werden (Windows, Mac, Solaris, z / OS, Sie nennen es). Ein Doppelklick führt es auf jeder Plattform aus (Java Runtime muss installiert sein, aber die meisten Benutzer haben es bereits installiert und wenn nicht, ist es eine Frage des Herunterladens, der Installation, "Next & gt;", "Next & gt;", "OK").
Wenn Sie die Bereitstellungsmethode "Java Web Start" auswählen, wird es noch einfacher: Der Benutzer klickt einfach auf die Startschaltfläche auf einer Webseite und die Anwendung wird ausgeführt (wenn die richtige JVM gemäß den Angaben im JNLP-Deskriptor installiert wird). oder der Benutzer wird auf die Java-Download-Seite weitergeleitet (wenn keine geeignete JVM gefunden wird).
GUI-Entwicklung (mit Swing-Toolkit) ist einfach und leistungsstark, vor allem, wenn Sie das richtige Werkzeug (d. h. Netbeans IDE) verwenden.
Tags und Links cross-platform