Plattformübergreifende Software

Im Computer, plattformübergreifende Software (auch genannt Multi-Plattform-Software, Plattform-agnostische Software, oder Plattformunabhängige Software) ist Computer Software das soll in mehreren arbeiten Computerplattformen.[1] Einige plattformübergreifende Software benötigen einen separaten Build für jede Plattform, andere können jedoch ohne besondere Vorbereitung direkt auf jeder Plattform ausgeführt werden, die in einem geschrieben werden Interpretierte Sprache oder zu tragbar zusammengestellt Bytecode für was die Dolmetscher oder Laufzeitpakete sind übliche oder Standardkomponenten aller unterstützten Plattformen.[2]

Zum Beispiel eine plattformübergreifende Anwendung kann weiterlaufen Microsoft Windows, Linux, und Mac OS. Übereinstimmende Software kann auf vielen Plattformen oder nur noch auf zwei Plattformen ausgeführt werden. Einige Frameworks für die plattformübergreifende Entwicklung sind Codename eins, Kivy, Qt, Flattern, Einheimischer, Xamarin, Telefonlap, Ionisch, und Reagieren nativ.[3]

Plattformen

Plattform kann sich auf den Art des Prozessors (CPU) oder andere Hardware beziehen, auf die ein Betriebssystem (Os) oder Anwendung läuft, die Art des Betriebssystems oder eine Kombination der beiden.[4] Ein Beispiel für eine gemeinsame Plattform ist die Microsoft Windows Betriebssystem auf der x86 Architektur. Andere bekannte Desktop-Plattformen sind Linux/Unix und Mac OS - beide sind selbst plattformübergreifend.[4] Es gibt jedoch viele Geräte wie Smartphones Das sind auch Plattformen. Anwendungen können so geschrieben werden, dass sie von den Funktionen einer bestimmten Plattform abhängen - entweder der Hardware, des Betriebssystems oder von virtuelle Maschine (VM) Es läuft weiter. Zum Beispiel die Java -Plattform ist eine gemeinsame VM -Plattform, die auf vielen OSS- und Hardware -Typen ausgeführt wird.[5]

Hardware

Eine Hardwareplattform kann sich auf eine beziehen Anweisungsset Architektur. Zum Beispiel: x86 Architektur und ihre Varianten wie z. IA-32 und x86-64. Diese Maschinen führen häufig eine Version von Microsoft Windows aus.[6] Obwohl sie andere OSS -OSS -Leitungen ausführen können, einschließlich Linux, OpenBSD, Netbsd, macos und Freebsd.

Das 32-Bit Armarchitekturen (und neuer 64-Bit Version) ist häufig auf Smartphones und üblich Tablet -Computer, die Android, iOS und andere betreiben Mobile Betriebssysteme.

Software

A Softwareplattform kann entweder ein Betriebssystem sein oder Programmierumgebung, obwohl es häufiger eine Kombination aus beiden ist. Eine Ausnahme ist Java, das eine OS-unabhängige VM verwendet, um auszuführen Java -Bytecode. Beispiele für Softwareplattformen sind:

Moll/Historisch

Java

Das Java -Sprache wird in der Regel so kompiliert, dass sie auf einer VM ausgeführt werden, die Teil der Java -Plattform ist. Die Java VM (JVM) ist eine CPU, die in Software implementiert ist und alle Java -Code ausführt. Dadurch kann der gleiche Code auf allen Systemen ausgeführt werden, die ein JVM implementieren. Java-Software kann von einer hardwarebasierten Hardwarebereich ausgeführt werden Java -Prozessor. Dies wird hauptsächlich in eingebetteten Systemen verwendet.

Der im JVM ausgeführte Java-Code hat Zugriff auf OS-bezogene Dienste wie Festplatten-E/A und Netzwerkzugriff, wenn die entsprechenden Berechtigungen gewährt werden. Das JVM ruft das System im Namen der Java -Anwendung auf. Auf diese Weise können Benutzer je nach einer entsprechenden Schutzniveau entscheiden ACL. Beispielsweise ist der Zugriff auf Disk und Netzwerk in der Regel für Desktop-Anwendungen aktiviert, jedoch nicht für browserbasierte Basis, aber für browserbasierte Applets. Das Java Native Interface (JNI) kann auch verwendet werden, um auf OS-spezifische Funktionen zuzugreifen, wobei Tragbarkeitsverlust.

Derzeit kann die Java Standard Edition-Software auf Microsoft Windows, MacOS, mehreren Unix-ähnlichen OSS und mehreren ausgeführt werden Echtzeit-Betriebssysteme für eingebettete Geräte. Für mobile Anwendungen werden Browser-Plugins für Windows- und Mac-basierte Geräte verwendet, und Android bietet integrierte Unterstützung für Java. Es gibt auch Untergruppen von Java, wie z. Java -Karte oder Java -Plattform, Micro Editionfür ressourcenbezogene Geräte entwickelt.

Implementierung

Damit Software plattformübergreifend betrachtet wird, muss sie auf mehr als einem funktionieren Rechnerarchitektur oder os. Die Entwicklung einer solchen Software kann eine zeitaufwändige Aufgabe sein, da unterschiedliche OSS unterschiedlich sind Anwendungsprogrammierschnittstellen (API). Zum Beispiel verwendet Linux eine andere API als Windows.

Software, die für ein Betriebssystem geschrieben wurde, funktioniert möglicherweise nicht automatisch auf allen Architekturen, die das Betriebssystem unterstützt. Ein Beispiel ist OpenOffice.org, was im Jahr 2006 nicht nativ lief AMD64 oder Intel 64 Prozessoren, die die x86-64-Standards implementieren; Bis 2012 wurde es "meistens" auf diese Systeme portiert.[9] Nur weil Software in einem beliebten geschrieben ist Programmiersprache wie zum Beispiel C oder C ++Es bedeutet nicht, dass es auf allen OSS läuft, die diese Sprache unterstützen - oder sogar auf verschiedenen Versionen desselben Betriebssystems.

Web Applikationen

Web Applikationen werden typischerweise als plattformübergreifend beschrieben, weil sie im Idealfall von jedem zugänglich sind Webbrowser: Der Browser ist die Plattform. Webanwendungen verwenden im Allgemeinen a Client -Server -Modell, aber stark in Komplexität und Funktionalität variieren. Es kann schwierig sein, den Wunsch nach Funktionen mit der Notwendigkeit einer Kompatibilität in Einklang zu bringen.

Grundlegende Webanwendungen führen alle oder die meisten Verarbeitung von a aus Stateless Serverund übergeben Sie das Ergebnis an den Client -Webbrowser. Die gesamte Benutzerinteraktion mit der Anwendung besteht aus einfachen Austausch von Datenanforderungen und Serverantworten. Diese Art der Anwendung war die Norm in den frühen Phasen von Weltweites Netz Anwendungsentwicklung. Solche Anwendungen folgen einem einfachen Transaktion Modell, identisch mit dem des Servierens Statische Webseiten. Heute sind sie immer noch relativ häufig, insbesondere wenn plattformübergreifende Kompatibilität und Einfachheit als kritischer als fortgeschrittene Funktionalität angesehen werden.

Spezifische Beispiele für erweiterte Webanwendungen umfassen die Weboberfläche zu Google Mail, A9.com, Google Maps Website und der Live -Suchdienst (jetzt Bing) von Microsoft. Solche Anwendungen hängen routinemäßig von zusätzlichen Funktionen ab, die nur in den neueren Versionen beliebter Webbrowser gefunden wurden. Diese Funktionen umfassen Ajax, JavaScript, Dynamisches HTML, SVGund andere Komponenten von Reiche Webanwendungen. Älteren Versionen fehlen diese oft.

Entwurf

Aufgrund der konkurrierenden Interessen von Kompatibilität und Funktionalität sind zahlreiche Designstrategien entstanden.

Viele Softwaresysteme verwenden eine geschichtete Architektur, bei der plattformabhängiger Code auf die oberen und untersten Schichten beschränkt ist.

Anmutiger Abbau

Grapulierter Abbau versucht, allen Benutzern und Plattformen die gleiche oder ähnliche Funktionen zu liefern, während diese Funktionalität für ein begrenzterer Kundenbrowsser auf einen am wenigsten gemeinsamen Nenner verringert wird. Beispielsweise kann ein Benutzer, der versucht, einen Browser mit begrenzter Feature zu verwenden, um auf Google Mail zuzugreifen, bemerkt, dass Google Mail in den grundlegenden Modus mit reduzierter Funktionalität, aber dennoch nützlich schaltet.

Mehrere Codebasen

Einige Software werden in verschiedenen Codebasen für verschiedene (Hardware- und Betriebssystem-) Plattformen mit gleicher Funktionalität geführt. Dies erfordert mehr Anstrengungen, um den Code zu pflegen, kann sich jedoch lohnen, wenn die Menge an plattformspezifischen Code hoch ist.

Einzelcodebasis

Diese Strategie beruht auf einer Codebasis, die in mehreren plattformspezifischen Formaten kompiliert werden kann. Eine Technik ist Bedingte Zusammenstellung. Mit dieser Technik wird der Code, der allen Plattformen gemeinsam ist, nicht wiederholt. Codeblöcke, die nur für bestimmte Plattformen relevant sind interpretiert oder zusammengestellt wenn gebraucht. Eine andere Technik ist die Trennung der Funktionalität, die die Funktionalität nicht von Browsern oder OSS deaktiviert und gleichzeitig dem Benutzer eine vollständige Anwendung liefert. (Siehe auch: Trennung von Bedenken.) Diese Technik wird in der Webentwicklung verwendet, bei der interpretierter Code (wie in Skriptsprachen) die Plattform abfragen kann, auf der sie ausgeführt wird, um verschiedene Blöcke bedingt auszuführen.[10]

Bibliotheken von Drittanbietern

Bibliotheken von Drittanbietern versuchen, die plattformübergreifende Fähigkeiten zu vereinfachen, indem die Komplexität der Kundendifferenzierung hinter einer einzelnen, einheitlichen API auf Kosten von versteckt ist Verkäufersperrung.

Sich anpassendes Webdesign

Sich anpassendes Webdesign (RWD) ist ein Web -Design Computermonitore. Bei dieser Technik wird wenig oder kein plattformspezifischer Code verwendet.

Testen

Plattformübergreifende Anwendungen benötigen viel mehr Integrationstests. Einige Webbrowser verbieten die Installation verschiedener Versionen auf derselben Maschine. Es gibt mehrere Ansätze, die für mehrere Plattformen abzielen. Alle führen jedoch zu einer Software, die einen erheblichen manuellen Aufwand für Tests und Wartung erfordert.[11] Techniken wie Vollständige Virtualisierung werden manchmal als Problemumgehung für dieses Problem verwendet.

Tools wie das Seitenobjektmodell ermöglichen es, plattformübergreifende Tests zu skriptieren, damit ein Testfall mehrere Versionen einer App abdeckt. Wenn verschiedene Versionen ähnliche Benutzeroberflächen aufweisen, können alle mit einem Testfall getestet werden.

Traditionelle Anwendungen

Webanwendungen werden immer beliebter, aber viele Computerbenutzer verwenden immer noch herkömmliche Anwendungssoftware, die sich nicht auf eine Client-/Web-Server-Architektur stützt. Die Unterscheidung zwischen traditionellen und Webanwendungen ist nicht immer klar. Funktionen, Installationsmethoden und Architekturen für Web und herkömmliche Anwendungen überlappen und verwischen die Unterscheidung. Diese vereinfachende Unterscheidung ist jedoch eine häufige und nützliche Verallgemeinerung.

Binäre Software

Insbesondere als Binärdateien wurde herkömmliche Anwendungssoftware verteilt, insbesondere als Binärdateien ausführbare Dateien. Executables unterstützen nur die Plattform, für die sie erstellt wurden-was bedeutet, dass eine einzelne plattformübergreifende ausführbare Datei mit Code sehr aufgebläht werden könnte, die niemals auf einer bestimmten Plattform ausgeführt werden. Stattdessen gibt es im Allgemeinen eine Auswahl an ausführbaren Dingen, die jeweils für eine Plattform erstellt wurden.

Für Software, die als binäre ausführbare Datei verteilt ist, wie sie in C oder C ++ geschrieben wurden, muss es a geben Software Build Für jede Plattform ein Toolset, das - überträgt - eine einzelne Codebasis in mehrere binäre ausführbare Ausführungen übersetzt. Zum Beispiel, FeuerfuchsEin Open-Source-Webbrowser ist unter Windows, MacOS (beide Powerpc und x86 durch was Apple Inc. Anrufe a Universeller binär), Linux und BSD auf mehreren Computerarchitekturen. Die vier Plattformen (in diesem Fall sind Windows, MacOS, Linux und BSD) separate ausführbare Verteilungen, obwohl sie größtenteils aus demselben stammen Quellcode. In seltenen Fällen werden ausführbarer Code für mehrere Plattformen zu einer einzelnen ausführbaren Datei namens a kombiniert fett binär.

Die Verwendung verschiedener Toolsets reicht möglicherweise nicht aus, um eine funktionierende ausführbare Funktionen für verschiedene Plattformen zu erstellen. In diesem Fall müssen Programmierer Hafen Der Quellcode für die neue Plattform. Beispielsweise kann eine Anwendung wie Firefox, die bereits auf Windows in der X86-Familie ausgeführt wird, modifiziert und neu gebaut werden, um auch auf Linux auf dem X86 (und möglicherweise anderen Architekturen) zu laufen. Die Mehrfachversionen des Codes können als separate Codebasen gespeichert oder in eine Codebasis zusammengeführt werden.

Eine Alternative zum Portieren ist plattformübergreifende Virtualisierung, wobei Anwendungen, die für eine Plattform kompiliert wurden, ohne Änderung des Quellcodes oder der Binärdateien auf einer anderen ausgeführt werden können. Als Beispiel Apple's Rosetta, was eingebaut ist in Intel-Basierte Macintosh -Computer, werden Anwendungen ausgeführt, die für die vorherige Generation von MACs zusammengestellt wurden, die PowerPC -CPUs verwendeten. Ein weiteres Beispiel ist IBM Powervm lx86Dadurch können Linux/X86 -Anwendungen auf dem Linux/Power -Betriebssystem unmodifiziert ausgeführt werden.

Beispiel für plattformübergreifende binäre Software:

  • Das Libreoffice Office Suite wurde für Microsoft Windows, MacOS, viele Linux -Verteilungen, erstellt, Freebsd, Nettbsd, OpenBSD, Android, iOS, iPados, Chrome OS, webbasiert Collabora online und viele andere.[12][13] Viele davon werden auf mehreren Hardware -Plattformen mit Prozessorarchitekturen, einschließlich der IA-32, x86-64, ARM (Armel, Armhf, ARM64), MIPS, MIPEL, Powerpc, PPC64el und S390X [9][14]

Skripte und interpretierte Sprachen

Ein Skript kann als plattformübergreifend angesehen werden, wenn es seine Dolmetscher ist auf mehreren Plattformen verfügbar und das Skript verwendet nur die in die Sprache eingebaute Einrichtungen. Zum Beispiel ein Skript in geschrieben Python Für ein Unix-artig Das System wird wahrscheinlich mit wenig oder gar nicht unter Windows ausgeführt, da Python auch unter Windows ausgeführt wird. In der Tat gibt es viele Implementierungen (z. Ironpython zum .NET Framework). Das gleiche gilt für viele der Open Source Skriptsprachen.

Im Gegensatz zu ausführbaren Binärdateien kann das gleiche Skript für alle Computer verwendet werden, auf denen Software zum Interpretieren des Skripts verfügt. Dies liegt daran, dass das Skript im Allgemeinen in gespeicherten einfacher Text in einem Textdatei. Es kann einige triviale Probleme geben, wie die Darstellung von a neuer Liniencharakter.

Einige beliebte plattformübergreifende Skriptsprachen sind:

  • verprügeln - EIN Unix Shell üblicherweise unter Linux und anderen modernen unix-ähnlichen Systemen sowie unter Windows über die Cygwin Posix Kompatibilitätsschicht.
  • Perl - erstmals 1987 veröffentlicht. verwendet für CGI Programmierung, klein Systemadministration Aufgaben und mehr.
  • Php - Hauptsächlich für Webanwendungen verwendet.
  • Python - eine Sprache, auf die konzentriert Schnelle Anwendungsentwicklung und einfaches Schreiben anstelle von Laufzeiteffizienz.
  • Rubin -Eine objektorientierte Sprache, die leicht zu lesen ist. Kann auch im Internet verwendet werden Rubin auf Schienen.
  • Tcl - Eine dynamische Programmiersprache, die für eine Vielzahl von Verwendungsmöglichkeiten geeignet ist, einschließlich Web- und Desktop -Anwendungen, Netzwerk, Verwaltung, Tests und vielem mehr.

Videospiele

Plattformübergreifend oder multi-plattform ist ein Begriff Videospiele auf einer Reihe von von einer Reihe von Videospielkonsolen. Beispiele für plattformübergreifende Spiele sind: Bergmann 2049er, Tomb Raider: Legende, FIFA -Serie, NHL -Serie und Minecraft.

Jedes wurde auf einer Vielzahl von Gaming -Plattformen veröffentlicht, wie sie Wii, Playstation 3, Xbox 360, persönliche Computer, und mobile Geräte.

Einige Plattformen sind schwerer zu schreiben als andere. Um dies auszugleichen, kann zuerst ein Videospiel auf einigen Plattformen und später auf anderen veröffentlicht werden. Normalerweise geschieht dies, wenn ein neues Spielsystem veröffentlicht wird, weil Videospielentwickler Müssen sich mit seiner Hardware und Software vertraut machen.

Einige Spiele sind aufgrund von Lizenzvereinbarungen zwischen Entwicklern und Videospielkonsolenherstellern möglicherweise nicht plattformübergreifend, die die Entwicklung auf eine bestimmte Konsole beschränken. Als Beispiel, Disney Könnte ein Spiel mit der Absicht erstellen, die neuesten Veröffentlichungen zu veröffentlichen Nintendo und Sony Spielekonsole. Sollte Disney das Spiel zuerst mit Sony lizenzieren, kann es möglicherweise erforderlich sein, das Spiel nur für kurze Zeit auf der Konsole von Sony zu veröffentlichen oder unbegrenzt.

Plattformübergreifendes Spiel

Mehrere Entwickler haben Möglichkeiten implementiert, Spiele online zu spielen und gleichzeitig verschiedene Plattformen zu verwenden. Psyonix, Epische Spiele, Microsoft, und Ventil Alle besitzen Technologie, mit der Xbox 360 und PlayStation 3 Gamer mit PC -Spielern spielen können, sodass die Entscheidung, welche Plattform die Verbraucher verwenden können. Das erste Spiel, das diese Interaktivität zwischen PC- und Konsolenspielen ermöglicht, war Beben 3.[15]

Spiele mit plattformübergreifender Spiele Online -Spiel enthalten Raketenliga, Final Fantasy XIV, Street Fighter v, Killerinstinkt, Paragon und Fabel Glück, und Minecraft mit dem besseren zusammen Update auf Windows 10, VR Editions, Taschenausgabe und Xbox eins.

Programmierung

Die plattformübergreifende Programmierung ist die Praxis, absichtlich Software zu schreiben, um auf mehr als einer Plattform zu arbeiten.

Ansätze

Es gibt verschiedene Möglichkeiten, eine plattformübergreifende Anwendung zu schreiben. Ein Ansatz besteht darin, mehrere Versionen derselben Software in unterschiedlicher Weise zu erstellen Quellenbäume- Mit anderen Worten, die Microsoft Windows -Version einer Anwendung hat möglicherweise einen Satz von Quellcodedateien und die Macintosh Version ein anderer während a Foss *Nix System könnte ein Drittel haben. Dies ist zwar unkompliziert, aber im Vergleich zur Entwicklung für nur eine Plattform kann es viel mehr kosten, ein größeres Team zu bezahlen oder Produkte langsamer zu veröffentlichen. Es kann auch dazu führen, dass mehr Fehler verfolgt und repariert werden.

Ein anderer Ansatz ist die Verwendung von Software, die die Unterschiede zwischen den Plattformen verbirgt. Dies Abstraktionsschicht isoliert die Anwendung von der Plattform. Solche Anwendungen sind Plattform agnostisch. Auf diese Weise werden Anwendungen auf dem JVM erstellt.

Einige Anwendungen mischen verschiedene Methoden der plattformübergreifenden Programmierung, um die endgültige Anwendung zu erstellen. Beispiel Software -Portabilität. Firefox implementiert Xul, CSS und JavaScript für die Erweiterung des Browsers zusätzlich zu Klassiker Netscape-Stil -Browser -Plugins. Ein Großteil des Browsers selbst ist in Xul, CSS und JavaScript geschrieben.

Toolkits und Umgebungen

Es gibt viele Werkzeuge[16][17] verfügbar, um den Prozess der plattformübergreifenden Programmierung zu unterstützen:

  • 8.: Eine Entwicklungssprache, die verwendet Juce als GUI -Schicht. Derzeit unterstützt es Android, iOS, Windows, MacOS, Linux und Raspberry Pi.
  • Anant Computing: Eine mobile Anwendungsplattform, die in allen indischen Sprachen, einschließlich ihrer Tastaturen, funktioniert und auch Appwallet und native Leistung in allen OSS unterstützt.
  • SS SSIQ: Ein Framework, der den Workflow der App -Entwicklung und -bereitstellung in einer Unternehmensumgebung unterstützt. Nativ entwickelte Container präsentieren Hardwarefunktionen der mobilen Geräte oder Tablets über eine API zu HTML5 -Code, wodurch die Entwicklung mobiler Apps erleichtert wird, die auf verschiedenen Plattformen ausgeführt werden.
  • Boden: Ein in C ++ geschriebener UI -Framework.
  • Kairo: a gratis Software Bibliothek zur Bereitstellung einer vektorgrafischen basierten, geräteunabhängigen API. Es ist so konzipiert, dass es Primitive für die zweidimensionale Zeichnung über verschiedene Backends bietet. Kairo ist in C geschrieben und hat Bindungen für viele Programmiersprachen.
  • Cocos2d: Ein Open-Source-Toolkit und eine Game-Engine zur Entwicklung von 2D- und einfachen 3D-plattformübergreifenden Spielen und Anwendungen.
  • Codename eins: Ein Open-Source-Schreiben einmal läuft überall (Wora) Rahmen für Java- und Kotlin-Entwickler.
  • Delphi: Eine IDE, die eine pascalbasierte Sprache für die Entwicklung verwendet. Es unterstützt Android, iOS, Windows, MacOS, Linux.
  • Ecere SDK: Ein GUI- und 2D/3D -Grafik -Toolkit und IDE, geschrieben in EC und mit Unterstützung für zusätzliche Sprachen wie C und Python. Es unterstützt Linux, FreeBSD, Windows, Android, MacOS und das Web über Emscripten oder Binaryen (WebAssembly).
  • Finsternis: Eine Open-Source-Entwicklungsumgebung. Implementiert in Java mit einer konfigurierbaren Architektur, die viele Tools für die Softwareentwicklung unterstützt. Add-Ons sind für mehrere Sprachen erhältlich, einschließlich Java und C ++.
  • Fltk: Ein Open-Source-Toolkit, aber leichter, weil es sich auf die GUI beschränkt.
  • Flattern: Ein plattformübergreifendes UI-Framework für Android und iOS, die von entwickelt wurden von Google.
  • fpgui: Ein Open-Source-Widget-Toolkit, das vollständig in Objektpascal implementiert ist. Derzeit unterstützt es Linux, Windows und ein Stück Windows CE.
  • Genexus: Eine Windows Rapid Software Development-Lösung für plattformübergreifende Anwendungserstellung und -bereitstellung basierend auf Wissensrepräsentation und Unterstützung C#, Cobol, Java einschließlich Android- und Blackberry Smart Devices, Ziel c zum Apfel mobile Geräte, Rollenspiel, Rubin, Visual Basic, und Visual Foxpro.
  • GLBasic: Ein grundlegender Dialekt und Compiler, der C ++ - Code generiert. Es enthält Cross -Compiler für viele Plattformen und unterstützt zahlreiche Plattform (Windows, Mac, Linux, Android, iOS und einige exotische Handhelds).
  • Godot: Ein SDK, der Godot Engine verwendet.
  • Gtk+: Ein Open-Source-Widget-Toolkit für Unix-ähnliche Systeme mit X11 und Microsoft Windows.
  • Haxe: Eine Open-Source-Sprache.
  • Juce: Ein in C ++ geschriebenes Anwendungsrahmen, das zum Schreiben natives Software auf zahlreichen Systemen (Microsoft Windows, Possix, MacOS) verwendet wird, ohne dass sich der Code ändern kann.
  • Kivy: Ein Open-Source-plattformübergreifender UI-Framework, geschrieben in Python. Es unterstützt Android, iOS, Linux, Os x, Fenster und Raspberry Pi.
  • Leadtools: plattformübergreifende SDK-Bibliotheken zur Integration von Erkennung, Dokument-, Medizin-, Bildgebungs- und Multimedia-Technologien in Windows-, IOS-, MacOS-, Android-, Linux- und Webanwendungen.[18]
  • LiveCode: Eine kommerzielle plattformübergreifende schnelle Anwendungssprache, die von Hypertalk inspiriert ist.
  • Lazarus: Eine Programmierumgebung für den Freepascal Compiler. Es unterstützt die Erstellung von selbststehenden grafischen und Konsolenanwendungen und wird unter Linux, MacOSX, iOS, Android, Tellce, Windows und Web ausgeführt.
  • Max/msp: EIN visuelle Programmiersprache Dies umfasst den plattformunabhängigen Code mit einer plattformspezifischen Laufzeitumgebung in Anwendungen für MacOS und Windows, eine plattformübergreifende Android-Laufzeit. Es ermöglicht nicht modifizierte Android -Apps, nativ auf iOS und macOS auszuführen
  • Mendix: Eine Cloud-basierte Plattform für die Entwicklung von Anwendungen mit niedriger Code.
  • Monocross: Eine Open-Source Model View Controller Designmuster, bei dem das Modell und der Controller plattformübergreifend sind, die Ansicht jedoch plattformspezifisch ist.[19]
  • Mono: Eine open-Source-plattformübergreifende Version von Microsoft .net (Ein Rahmen für Anwendungen und Programmiersprachen)
  • Mosync: Ein Open-Source-SDK für die Entwicklung der mobilen Plattform-App in der C ++-Familie.
  • Mozilla -Anwendungsrahmen: Eine Open-Source-Plattform zum Erstellen von MacOS-, Windows- und Linux-Anwendungen.
  • Ein plattformübergreifendes JavaScript/TypeScript-Framework für Android- und iOS-Entwicklung.
  • OpenGL: Eine 3D -Grafikbibliothek.
  • Pixel Game Maker MV: Eine proprietäre 2D -Spieleentwicklungssoftware für Windows zur Entwicklung von Windows und Nintendo Switch Spiele.
  • PureBasic: Eine proprietäre Sprache und IDE zum Erstellen von MacOS-, Windows- und Linux -Anwendungen.
  • Renativ: Die universelle Entwicklung SDK zum Aufbau von Multi-Plattform-Projekten mit React Native. Enthält neueste iOS, TVOS, Android, Android TV, Web, Tizen TV, Tizen Watch, LG Webos, MacOS/OSX, Windows, Kaios, Firefox OS und Firefox TV -TV -Plattformen.
  • Qt: ein Anwendungsrahmen und Widget Toolkit zum Unix-artig Systeme mit X11, Microsoft Windows, MacOS und andere Systeme - verfügbar sowohl unter proprietärem als auch unter Open-Source-Lizenzen.
  • Einfache und schnelle Multimedia -Bibliothek: Ein Multimedia c ++ API Das bietet einen niedrigen und hohen Zugang zu Grafiken, Eingaben, Audio usw.
  • Einfache Regieschicht: Eine Open-Source-Multimedia-Bibliothek, die in C geschrieben wurde, die eine Abstraktion über die Grafik, den Ton und die Eingabe verschiedener Plattformen erzeugt Apis. Es läuft auf OSS einschließlich Linux, Windows und MacOS und richtet sich an Spiele und Multimedia -Anwendungen.
  • Smartface: Ein native App -Entwicklungstool zum Erstellen mobiler Anwendungen für Android und iOS unter Verwendung Wysiwyg Designeditor mit JavaScript Code Editor.
  • Tcl/tk
  • Ultimate ++: Ein C ++ - Rapid Application Development Framework, das sich auf die Produktivität der Programmierer konzentriert. Es enthält eine Reihe von Bibliotheken (GUI, SQL usw.) und eine integrierte Entwicklungsumgebung. Es unterstützt Windows und Unix-ähnliche Betriebssysteme.
  • Einheit: Ein weiterer plattformübergreifender SDK, der Unity Engine verwendet.
  • UNO -Plattform: Windows, MacOS, iOS, Android, WebAssembly und Linux mit C#.
  • Unwirklich: Eine plattformübergreifende SDK, die Unreal Engine verwendet.
  • V-Play-Engine: V-Play ist eine plattformübergreifende Entwicklung SDK, die auf dem beliebten QT-Framework basiert. V-Play-Apps und Spiele werden im QT Creator erstellt.
  • Wellenmacher: Ein Tool mit niedrigem Codenentwicklung zum Erstellen von reaktionsschnellen Web- und hybriden mobilen (Android & iOS) -Anwendungen.
  • Windev: Eine integrierte Entwicklungsumgebung für Windows, Linux, .NET und Java sowie Webbrowers. Optimiert für geschäftliche und industrielle Anwendungen.
  • wxWidgets: ein Open-Source-Widget-Toolkit, das auch ein ist Anwendungsrahmen.[20] Es läuft weiter Unix-artig Systeme mit X11, Microsoft Windows und MacOS.
  • Xojo: Eine Rad-IDE, die eine objektorientierte Programmiersprache verwendet, um Desktop-, Web- und iOS-Apps zu erstellen. XOJO stellt native, kompilierte Desktop -Apps für MacOS, Windows, Linux und Raspberry Pi her. Es erstellt kompilierte Web -Apps, die als eigenständige Server oder über CGI ausgeführt werden können. Und kürzlich fügte es die Möglichkeit hinzu, native iOS -Apps zu erstellen.

Herausforderungen

Es gibt viele Herausforderungen bei der Entwicklung von plattformübergreifenden Software.

  • Das Testen von plattformübergreifenden Anwendungen kann erheblich komplizierter sein, da verschiedene Plattformen leicht unterschiedliche Verhaltensweisen oder subtile Fehler aufweisen können. Dieses Problem hat einige Entwickler dazu veranlasst, die plattformübergreifende Entwicklung als "einmal zu schreiben, überall zu debuggen", eine Übersicht über Sun Microsystems'"Schreiben Sie einmal, rennen Sie irgendwohin"Marketing -Slogan.
  • Entwickler sind oft darauf beschränkt, die zu verwenden kleinster gemeinsamer Nenner Teilmenge der Funktionen, die auf allen Plattformen erhältlich sind. Dies kann die Leistung der Anwendung behindern oder Entwicklern die Verwendung der fortschrittlichsten Funktionen jeder Plattform verbieten.
  • Verschiedene Plattformen haben häufig unterschiedliche Konventionen der Benutzeroberfläche, die plattformübergreifende Anwendungen nicht immer aufnehmen. Zum Beispiel Anwendungen, die für macOS und entwickelt wurden und Gnom sollen die wichtigste Taste auf der rechten Seite eines Fensters oder Dialogfelds platzieren, während Microsoft Windows und Kde habe die entgegengesetzte Konvention. Obwohl viele dieser Unterschiede subtil sind, kann sich eine plattformübergreifende Anwendung, die diesen Konventionen nicht entspricht, möglicherweise klobig oder fremd für den Benutzer. Wenn Sie schnell arbeiten, können solche gegnerischen Konventionen sogar dazu führen Datenverlust, wie in a Dialogbox Bestätigung, ob Änderungen speichern oder verwerfen sollen.
  • Skriptsprachen und VM -Bytecode müssen jedes Mal, wenn sie verwendet werden, in nativen ausführbaren Code übersetzt werden, was eine Leistungsstrafe verhängt. Diese Strafe kann mithilfe von Techniken wie gelindert werden Just-in-Time-Zusammenstellung; Einige Rechenaufwand können jedoch unvermeidlich sein.
  • Unterschiedliche Plattformen erfordern native Paketformate wie z. Drehzahl und MSI. Mehrplattforminstallateure wie z. Installywhere diesen Bedarf ansprechen.
  • Durch plattformübergreifende Ausführungsumgebungen können plattformübergreifende Sicherheitsfehler leiden und eine fruchtbare Umgebung für plattformübergreifende Malware erzeugen.[21]

Siehe auch

Verweise

  1. ^ "Designrichtlinien: Glossar". java.sun.com. Abgerufen 2011-10-19.
  2. ^ "SDD Technology Blog: Definition der Cross -Plattform". SDD -Technologie. Abgerufen 2020-10-18.
  3. ^ Lee P Richardson (2016-02-16). "Xamarin vs Ionic: eine mobile, Kreuzplattform, Shootout".
  4. ^ a b "Plattformdefinition". Das Linux -Informationsprojekt. Abgerufen 2014-03-27.
  5. ^ "Cross Platform Mobile App -Entwicklung". Groovy Web. Abgerufen 2020-03-27.
  6. ^ Auf der Net Marketshare -Website, der ab März 2011 rund 89% Marktanteil hat
  7. ^ "Über Mono". mono-project.com. Abgerufen 2015-12-17.
  8. ^ "Apple kündigt den MAC -Übergang zu Apple Silicon an". Apple Newsroom. Abgerufen 2020-12-08.
  9. ^ Portierung auf x86-64 (AMD64, EM64T)-Apache OpenOffice Wiki. Wiki.services.openoffice.org (2012-06-22). Abgerufen am 2013-07-17.
  10. ^ Corti, Sascha P. (Oktober 2011). "Browser und Feature -Erkennung". MSDN Magazine. Abgerufen 28. Januar 2014.
  11. ^ Choudhary, S.R. (2014). "Plattformübergreifende Tests und Wartung von Web- und mobilen Anwendungen". Begleitverfahren der 36. Internationalen Konferenz über Software -Engineering - ICSe Companion 2014: 642–645. doi:10.1145/2591062.2591097. ISBN 9781450327688. S2CID 1903037.
  12. ^ Mehrotra, Pranob (2020-12-01). "Collabora Office Suite erhält ein neues Layout für Android -Tablets und Chromebooks". XDA-Entwickler. Abgerufen 2021-01-15. Collabora Office ist eine beliebte Open-Source-Alternative zur Microsoft Office Suite. Es basiert auf LibreOffice und ist auf einer Vielzahl von Plattformen erhältlich, darunter Windows, Linux, iOS und Android. In diesem Jahr im Juli brachte ein großes Update für die Office Suite Unterstützung für Chrome OS -Geräte.{{}}: CS1 Wartung: URL-Status (Link)
  13. ^ "Collabora -Büro auf iOS und Android wurde einfach besser!". Adfinis. 2020-12-15. Abgerufen 2021-01-15. ... Berühren Sie optimierte Schnittstellen: Eine für Tablets und eine für Telefonbildschirme. ... (iOS, iPados, Chromebooks, Android).{{}}: CS1 Wartung: URL-Status (Link)
  14. ^ "Nextcloud Ubuntu Appliance fügt Collabora online zu Raspberry Pi Image hinzu.". Muylinux. 2021-03-26. Abgerufen 2021-03-30. Die erste praktikable selbst gehostete Webbürolösung für die beliebte Raspberry Pi 4-Plattform{{}}: CS1 Wartung: URL-Status (Link)
  15. ^ Cribba. Quake III Arena, Riesenbomben, 15. Februar 2013.
  16. ^ Die GUI -Toolkit, Framework -Seite
  17. ^ "Plattform unabhängige FAQ". Archiviert von das Original am 2008-08-16. Abgerufen 2009-04-25.
  18. ^ "Plattformübergreifende SDK-Bibliotheken für Erkennung, Dokument, Medizin, Bildgebung und Multimedia". www.leadtools.com. Abgerufen 2021-03-03.
  19. ^ "12 Vorteile der Xamarin-plattformübergreifenden App-Entwicklung". Kopfarbeiten. 15. März 2019.
  20. ^ WxWidgets Beschreibung
  21. ^ Warren, Tom (2020-01-14). "Microsoft bietet sich von Windows 7 und den Millionen von PCs ab, die es immer noch ausführen.". Der Verge. Abgerufen 2020-02-06.