Кроссплатформенное программное обеспечение
В вычислительной технике кроссплатформенное программное обеспечение (также называемое многоплатформенным программным обеспечением , платформонезависимым программным обеспечением или платформонезависимым программным обеспечением ) — это компьютерное программное обеспечение , предназначенное для работы на нескольких вычислительных платформах . [1] Некоторое кроссплатформенное программное обеспечение требует отдельной сборки для каждой платформы, но некоторые из них можно запускать непосредственно на любой платформе без специальной подготовки, они написаны на интерпретируемом языке или скомпилированы в переносимый байт-код, для которого интерпретаторы или пакеты времени выполнения являются общими или стандартными. компоненты всех поддерживаемых платформ. [2]
Например, кроссплатформенное приложение может работать в Linux , macOS и Microsoft Windows . Кроссплатформенное программное обеспечение может работать на многих платформах или всего на двух. Некоторые фреймворки для кроссплатформенной разработки — это Codename One , ArkUI-X, Kivy , Qt , GTK , Flutter , NativeScript , Xamarin , Apache Cordova , Ionic и React Native . [3]
Платформы
[ редактировать ]Платформа может относиться к типу процессора (ЦП) или другого оборудования, на котором работает операционная система (ОС) или приложение , типу ОС или их комбинации. [4] Примером распространенной платформы является Android , работающий на архитектуре семейства ARM . Другими известными платформами являются Linux / Unix , macOS и Windows , все они кроссплатформенные. [4] Приложения могут быть написаны в зависимости от функций конкретной платформы — оборудования, ОС или виртуальной машины (ВМ), на которой она работает. Например, платформа Java — это обычная платформа виртуальных машин, которая работает на многих ОС и типах оборудования.
Аппаратное обеспечение
[ редактировать ]Аппаратная платформа может относиться к архитектуре набора команд . Например: ARM или архитектура x86. Эти машины могут работать под управлением разных операционных систем.
Смартфоны и планшеты обычно используют архитектуру ARM, они часто работают под управлением Android или iOS и других мобильных операционных систем .
Программное обеспечение
[ редактировать ]может Программная платформа представлять собой либо операционную систему (ОС), либо среду программирования , хотя чаще всего она представляет собой комбинацию того и другого. Исключением является Java , которая использует независимую от ОС виртуальную машину (ВМ) для выполнения байт-кода Java . Некоторые программные платформы:
- Андроид (ARM64)
- ChromeOS (ARM32, ARM64, IA-32, x86-64)
- Common Language Infrastructure (CLI) от Microsoft , реализованная в:
- Устаревшая платформа .NET Framework , работающая только в Microsoft Windows.
- Новая платформа .NET (называемая просто «.NET»), которая работает в Microsoft Windows, macOS и Linux.
- Другие реализации, такие как Mono (ранее Novell и Xamarin [5] )
- HarmonyOS (ARM64, RISC-V, x86, x64 и LoongArch)
- iOS ((ARMv8-A))
- iPadOS (ARMv8-A)
- Ява
- Linux ( Alpha, ARC, ARM, C-Sky, Hexagon, IA-64, LoongArch, m68k, Microblaze, MIPS, Nios II, OpenRISC, PA-RISC, PowerPC, RISC-V, s390, SuperH, SPARC, x86, Xtensa )
- macOS x86, ARM (силикон Apple)
- Microsoft Windows (IA-32, x86-64, ARM, ARM64)
- PlayStation 4 (x86), PlayStation 3 (PowerPC) и PlayStation Vita (ARM)
- Солярис (СПАРК, x86)
- СПАРК
- Unix (многие платформы с 1969 г.)
- Веб-браузеры – в основном совместимы друг с другом, запускают JavaScript . веб-приложения
- Xbox
- Малый, исторический
- AmigaOS (m68k), AmigaOS 4 (PowerPC), AROS (x86, PowerPC, m68k), MorphOS (PowerPC)
- Atari TOS , MiNT
- BSD (много платформ; см. NetBSDnet, [ нужны разъяснения ] например)
- Системы типа DOS на x86: MS-DOS , PC DOS , DR-DOS , FreeDOS
- ОС/2 , eComStation
Ява
[ редактировать ]Язык Java обычно компилируется для работы на виртуальной машине, которая является частью платформы Java. Виртуальная машина Java (Java VM, JVM) — это процессор, реализованный в программном обеспечении, на котором выполняется весь код Java. Это позволяет одному и тому же коду работать во всех системах, реализующих JVM. Программное обеспечение Java может выполняться аппаратным процессором Java . Чаще всего это используется во встроенных системах.
Код Java, работающий в JVM, имеет доступ к службам, связанным с ОС, таким как дисковый ввод-вывод (I/O) и доступ к сети, если предоставлены соответствующие привилегии. JVM выполняет системные вызовы от имени приложения Java. Это позволяет пользователям выбирать соответствующий уровень защиты в зависимости от списка контроля доступа (ACL). Например, доступ к диску и сети обычно разрешен для настольных приложений, но не для апплетов на основе браузера . ( Собственный интерфейс Java JNI) также можно использовать для доступа к функциям, специфичным для ОС, с потерей переносимости.
В настоящее время программное обеспечение Java Standard Edition может работать в Microsoft Windows, macOS, нескольких Unix-подобных ОС и нескольких операционных системах реального времени для встраиваемых устройств. Для мобильных приложений используются плагины браузера для устройств на базе Windows и Mac, а в Android имеется встроенная поддержка Java. Существуют также подмножества Java, такие как Java Card или Java Platform, Micro Edition , предназначенные для устройств с ограниченными ресурсами.
Выполнение
[ редактировать ]Чтобы программное обеспечение считалось кроссплатформенным, оно должно функционировать более чем на одной компьютерной архитектуре или ОС. Разработка такого программного обеспечения может оказаться трудоемкой задачей, поскольку разные ОС имеют разные интерфейсы прикладного программирования (API).
Программное обеспечение, написанное для одной ОС, может не работать автоматически на всех архитектурах, которые поддерживает ОС. Тот факт, что программное обеспечение написано на популярном языке программирования, таком как C или C++ , не означает, что оно будет работать на всех ОС, поддерживающих этот язык, или даже на разных версиях одной и той же ОС.
Веб-приложения
[ редактировать ]Веб-приложения обычно описываются как кроссплатформенные, поскольку в идеале они доступны из любого веб-браузера : браузер является платформой. Веб-приложения обычно используют модель клиент-сервер , но сильно различаются по сложности и функциональности. Может быть трудно совместить потребность в новых функциях с необходимостью совместимости.
Базовые веб-приложения выполняют всю или большую часть обработки с сервера без отслеживания состояния и передают результат клиентскому веб-браузеру. Все взаимодействие пользователя с приложением состоит из простого обмена запросами данных и ответами сервера. Этот тип приложений был нормой на ранних этапах разработки приложений Всемирной паутины . Такие приложения используют простую модель транзакций , идентичную модели обслуживания статических веб-страниц . Сегодня они по-прежнему относительно распространены, особенно там, где кроссплатформенная совместимость и простота считаются более важными, чем расширенная функциональность.
Яркими примерами продвинутых веб-приложений являются веб-интерфейс Gmail и Google Maps . Такие приложения обычно зависят от дополнительных функций, имеющихся только в последних версиях популярных веб-браузеров. Эти функции включают Ajax , JavaScript , Dynamic HTML , SVG и другие компоненты многофункциональных веб-приложений .
Дизайн
[ редактировать ]Из-за конкурирующих интересов совместимости и функциональности возникло множество стратегий проектирования.
Многие программные системы используют многоуровневую архитектуру, в которой зависящий от платформы код ограничивается верхними и нижними уровнями.
Изящная деградация
[ редактировать ]Грациозная деградация пытается предоставить одинаковые или схожие функциональные возможности всем пользователям и платформам, одновременно сводя эту функциональность к наименьшему общему знаменателю для более ограниченных клиентских браузеров. Например, пользователь, пытающийся использовать браузер с ограниченными возможностями для доступа к Gmail, может заметить, что Gmail переключается в базовый режим с ограниченной функциональностью, но все еще используемый.
Несколько кодовых баз
[ редактировать ]Некоторое программное обеспечение поддерживается в отдельных базах кода для разных платформ (аппаратного обеспечения и ОС) с эквивалентной функциональностью. Это требует больше усилий для поддержки кода, но может оказаться целесообразным, если количество кода, специфичного для платформы, велико.
Единая кодовая база
[ редактировать ]Эта стратегия основана на наличии одной базы кода, которую можно скомпилировать в несколько форматов, специфичных для платформы. Одним из методов является условная компиляция . Благодаря этому методу код, общий для всех платформ, не повторяется. Блоки кода, относящиеся только к определенным платформам, делаются условными, поэтому они интерпретируются или компилируются только при необходимости. Другой метод — разделение функциональности, при котором отключаются функции, не поддерживаемые браузерами или ОС, но при этом предоставляется пользователю полноценное приложение. (См. также: Разделение задач .) Этот метод используется в веб-разработке, где интерпретируемый код (как в языках сценариев) может запрашивать платформу, на которой он работает, для условного выполнения различных блоков. [6]
Сторонние библиотеки
[ редактировать ]Сторонние библиотеки пытаются упростить кроссплатформенность, скрывая сложности дифференциации клиентов за единым унифицированным API за счет привязки к поставщику .
Адаптивный веб-дизайн
[ редактировать ]Адаптивный веб-дизайн (RWD) — это подход к веб-дизайну, направленный на создание визуального макета сайтов, обеспечивающего оптимальные впечатления от просмотра — легкое чтение и навигацию с минимальным изменением размера, панорамированием и прокруткой — на широком спектре устройств, от мобильных телефоны на мониторы настольных компьютеров. В этом методе используется мало или совсем не используется код, специфичный для платформы.
Тестирование
[ редактировать ]Кроссплатформенные приложения требуют гораздо большего интеграционного тестирования . Некоторые веб-браузеры запрещают установку разных версий на один и тот же компьютер. Существует несколько подходов, используемых для работы с несколькими платформами, но все они приводят к созданию программного обеспечения, требующего значительных ручных усилий для тестирования и обслуживания. [7] такие методы, как полная виртуализация Для решения этой проблемы иногда используются .
Такие инструменты, как объектная модель страницы, позволяют создавать сценарии кросс-платформенных тестов, чтобы один тестовый пример охватывал несколько версий приложения. Если разные версии имеют схожие пользовательские интерфейсы, все их можно протестировать с помощью одного тестового примера.
Традиционные приложения
[ редактировать ]Веб-приложения становятся все более популярными, но многие пользователи компьютеров по-прежнему используют традиционное прикладное программное обеспечение, которое не опирается на архитектуру клиент/веб-сервер. Различие между традиционными и веб-приложениями не всегда четкое. Функции, методы установки и архитектура веб-приложений и традиционных приложений частично совпадают и стирают различия. Тем не менее, это упрощающее различие является распространенным и полезным обобщением.
Бинарное программное обеспечение
[ редактировать ]Традиционное прикладное программное обеспечение распространяется в виде двоичных файлов, особенно исполняемых файлов . Исполняемые файлы поддерживают только ту платформу, для которой они были созданы, а это означает, что один кроссплатформенный исполняемый файл может быть очень раздутым с кодом, который никогда не выполняется на конкретной платформе. Вместо этого обычно существует набор исполняемых файлов, каждый из которых создан для одной платформы.
Для программного обеспечения, которое распространяется в виде двоичного исполняемого файла, например, написанного на C или C++, должна существовать сборка программного обеспечения для каждой платформы с использованием набора инструментов, который преобразует — транскомпилирует — одну базу кода в несколько двоичных исполняемых файлов. Например, Firefox , веб-браузер с открытым исходным кодом, доступен в Windows, macOS (как PowerPC , так и x86 через то, что Apple Inc. называет универсальным двоичным файлом ), Linux и BSD на нескольких компьютерных архитектурах. Четыре платформы (в данном случае Windows, macOS, Linux и BSD) представляют собой отдельные исполняемые дистрибутивы, хотя в основном они имеют один и тот же исходный код . В редких случаях исполняемый код, созданный для нескольких платформ, объединяется в один исполняемый файл, называемый толстым двоичным файлом .
Использование разных наборов инструментов может оказаться недостаточным для создания работающих исполняемых файлов для разных платформ. В этом случае программистам придется портировать исходный код на новую платформу. Например, такое приложение, как Firefox, которое уже работает в Windows на семействе x86, можно изменить и пересобрать для работы в Linux на x86 (и, возможно, на других архитектурах). Несколько версий кода могут храниться как отдельные базы кода или объединяться в одну базу кода.
Альтернативой портированию является кроссплатформенная виртуализация , при которой приложения, скомпилированные для одной платформы, могут работать на другой без изменения исходного кода или двоичных файлов. Например, компьютер Apple Rosetta , встроенный в компьютеры Macintosh на базе Intel , запускает приложения, скомпилированные для компьютеров Mac предыдущего поколения, которые использовали процессоры PowerPC. Другим примером является IBM PowerVM Lx86 , который позволяет приложениям Linux/x86 запускаться без изменений в ОС Linux/Power.
Пример кроссплатформенного двоичного программного обеспечения:
- Офисный пакет LibreOffice , создан для Microsoft Windows, macOS, Linux, , iOS , iPadOS , ChromeOS FreeBSD, NetBSD, OpenBSD, Android веб - интерфейса Collabora Online и многих других . [8] [9] Многие из них поддерживаются на нескольких аппаратных платформах с процессорными архитектурами, включая IA-32 , x86-64 , ARM (ARMel, ARMhf, ARM64), MIPS , MIPSel , PowerPC , ppc64le и S390x[9]. [10]
Сценарии и интерпретируемые языки
[ редактировать ]Сценарий можно считать кроссплатформенным, если его интерпретатор доступен на нескольких платформах и сценарий использует только возможности, встроенные в язык. Например, сценарий, написанный на Python для Unix-подобной системы, скорее всего, будет работать с небольшими изменениями или вообще без них в Windows, поскольку Python также работает в Windows; действительно существует множество реализаций (например, IronPython для .NET Framework ). То же самое касается многих с открытым исходным кодом языков сценариев .
В отличие от двоичных исполняемых файлов, один и тот же сценарий можно использовать на всех компьютерах, на которых установлено программное обеспечение для интерпретации сценария. Это связано с тем, что сценарий обычно хранится в виде обычного текста в текстовом файле . Могут возникнуть некоторые тривиальные проблемы, такие как представление символа новой строки .
Некоторые популярные кроссплатформенные языки сценариев:
- bash — оболочка Unix, обычно работающая в Linux и других современных Unix-подобных системах, а также в Windows через уровень совместимости Cygwin POSIX .
- Perl — впервые выпущен в 1987 году. Используется для CGI программирования , небольших задач системного администрирования и многого другого.
- PHP – в основном используется для веб-приложений.
- Python — язык, который ориентирован на быструю разработку приложений и простоту написания, а не на эффективность выполнения.
- Ruby — объектно-ориентированный язык, который должен быть легко читаемым. Также может использоваться в Интернете через Ruby on Rails .
- Tcl — динамический язык программирования, подходящий для широкого спектра применений, включая веб-приложения и настольные приложения, работу в сети, администрирование, тестирование и многое другое.
Видеоигры
[ редактировать ]Кроссплатформенность или мультиплатформенность — это термин, который также может применяться к видеоиграм, выпущенным на различных игровых консолях . Примеры кроссплатформенных игр: Miner 2049er , Tomb Raider: Legend , серия FIFA , серия NHL и Minecraft .
Каждая из них была выпущена на различных игровых платформах, таких как Wii , PlayStation 3 , Xbox 360 , персональных компьютерах и мобильных устройствах .
Для некоторых платформ писать труднее, чем для других, поэтому требуется больше времени для разработки видеоигры в соответствии с тем же стандартом. Чтобы компенсировать это, видеоигру можно сначала выпустить на нескольких платформах, а затем на других. Обычно это происходит при выпуске новой игровой системы, поскольку разработчикам видеоигр необходимо ознакомиться с ее аппаратным и программным обеспечением.
Некоторые игры могут не быть кроссплатформенными из-за лицензионных соглашений между разработчиками и производителями игровых консолей, которые ограничивают разработку одной конкретной консолью. Например, Disney может создать игру с намерением выпустить ее на новейших Nintendo и Sony игровых консолях . Если Disney сначала лицензирует игру у Sony, возможно, ей придется выпустить игру исключительно на консоли Sony на короткое время или на неопределенный срок .
Кроссплатформенная игра
[ редактировать ]Несколько разработчиков реализовали способы играть в онлайн-игры, используя разные платформы. Psyonix , Epic Games , Microsoft и Valve обладают технологией, которая позволяет геймерам Xbox 360 и PlayStation 3 играть с геймерами на ПК, оставляя решение о том, какую платформу использовать, за потребителями. Первой игрой, обеспечивающей такой уровень интерактивности между ПК и консольными играми (Dreamcast со специально изготовленной клавиатурой и мышью), была Quake 3 . [11] [12]
К играм с кроссплатформенной сетевой игрой относятся Rocket League , Final Fantasy XIV , Street Fighter V , Killer Instinct , Paragon и Fable Fortune , а также Minecraft с обновлением Better Together для Windows 10 , выпусков VR, Pocket Edition и Xbox One .
Программирование
[ редактировать ]Кроссплатформенное программирование — это практика сознательного написания программного обеспечения для работы более чем на одной платформе.
Подходы
[ редактировать ]Существуют разные способы написания кроссплатформенного приложения. Один из подходов заключается в создании нескольких версий одного и того же программного обеспечения в разных деревьях исходного кода . Другими словами, версия приложения для Microsoft Windows может иметь один набор файлов исходного кода, а версия для Macintosh — другой, в то время как система FOSS *nix может иметь один набор файлов исходного кода. третий. Хотя это и просто, по сравнению с разработкой только для одной платформы платить более крупной команде или выпускать продукты медленнее может стоить гораздо дороже. Это также может привести к увеличению количества ошибок, которые необходимо отслеживать и исправлять.
Другой подход — использовать программное обеспечение, скрывающее различия между платформами. Этот уровень абстракции изолирует приложение от платформы. Такие приложения не зависят от платформы . Приложения, работающие на JVM, создаются таким образом.
Некоторые приложения смешивают различные методы кроссплатформенного программирования для создания конечного приложения. Примером может служить веб-браузер Firefox, который использует абстракцию для создания некоторых компонентов нижнего уровня с отдельными поддеревьями исходного кода для реализации функций, специфичных для платформы (например, графического пользовательского интерфейса), а также реализацию более чем одного языка сценариев для облегчения переносимости программного обеспечения. . Firefox реализует XUL , CSS и JavaScript для расширения браузера в дополнение к классическим Netscape плагинам браузера в стиле . Большая часть самого браузера написана на XUL, CSS и JavaScript.
Наборы инструментов и среды
[ редактировать ]Есть много инструментов [13] [14] доступны для помощи в процессе кроссплатформенного программирования:
- 8-й : язык разработки, который использует Juce в качестве слоя графического интерфейса. В настоящее время он поддерживает Android, iOS, Windows, macOS, Linux и Raspberry Pi.
- Anant Computing : платформа мобильных приложений, которая работает на всех индийских языках, включая их клавиатуры, а также поддерживает AppWallet и встроенную производительность во всех ОС.
- AppearIQ : платформа, поддерживающая рабочий процесс разработки и развертывания приложений в корпоративной среде. Контейнеры собственной разработки представляют аппаратные функции мобильных устройств или планшетов через API в коде HTML5, что упрощает разработку мобильных приложений, работающих на разных платформах.
- Boden : инфраструктура пользовательского интерфейса, написанная на C++.
- Cairo : библиотека бесплатного программного обеспечения , используемая для предоставления независимого от устройства API на основе векторной графики. Он предназначен для предоставления примитивов для двумерного рисования в различных бэкэндах. Cairo написан на C и имеет привязки ко многим языкам программирования.
- Cocos2d : набор инструментов и игровой движок с открытым исходным кодом для разработки 2D и простых 3D кроссплатформенных игр и приложений.
- Codename One : платформа Write Once Run Anywhere (WORA) с открытым исходным кодом для разработчиков Java и Kotlin.
- Delphi : IDE, использующая для разработки язык на основе Pascal. Он поддерживает Android, iOS, Windows, macOS, Linux.
- Ecere SDK : набор инструментов и интегрированная среда разработки с графическим интерфейсом и 2D/3D-графикой, написанные на eC и с поддержкой дополнительных языков, таких как C и Python. Он поддерживает Linux, FreeBSD, Windows, Android, macOS и Интернет через Emscripten или Binaryen (WebAssembly).
- Eclipse : среда разработки с открытым исходным кодом. Реализован на Java с настраиваемой архитектурой, поддерживающей множество инструментов для разработки программного обеспечения. Дополнения доступны для нескольких языков, включая Java и C++.
- FLTK : набор инструментов с открытым исходным кодом, но более легкий, поскольку ограничивается графическим интерфейсом.
- Flutter : кроссплатформенная платформа пользовательского интерфейса для Android и iOS, разработанная Google .
- fpGUI : набор инструментов виджетов с открытым исходным кодом, полностью реализованный в Object Pascal. В настоящее время он поддерживает Linux, Windows и немного Windows CE.
- GeneXus : решение для быстрой разработки программного обеспечения Windows для создания и развертывания кросс-платформенных приложений на основе представления знаний и поддержки C# , COBOL , Java , включая смарт-устройства Android и BlackBerry, Objective-C для Apple мобильных устройств , RPG , Ruby , Visual Basic и Визуальный ФоксПро .
- GLBasic : диалект и компилятор BASIC, генерирующий код C++. Он включает в себя кросс-компиляторы для многих платформ и поддерживает множество платформ (Windows, Mac, Linux, Android, iOS и некоторые экзотические портативные компьютеры).
- Godot : SDK, использующий Godot Engine.
- GTK +: набор инструментов виджетов с открытым исходным кодом для Unix-подобных систем с X11 и Microsoft Windows.
- Haxe : язык с открытым исходным кодом.
- Juce : платформа приложений, написанная на C++, используемая для написания собственного программного обеспечения во многих системах (Microsoft Windows, POSIX, macOS) без изменения кода.
- Kivy : кроссплатформенная платформа пользовательского интерфейса с открытым исходным кодом, написанная на Python . Он поддерживает Android , iOS , Linux , OS X , Windows и Raspberry Pi .
- LEADTOOLS : Кроссплатформенные библиотеки SDK для интеграции технологий распознавания, документов, медицинских, изображений и мультимедиа в Windows, iOS, macOS, Android, Linux и веб-приложения. [15]
- LiveCode : коммерческий кроссплатформенный язык быстрой разработки приложений, вдохновленный HyperTalk.
- Lazarus : среда программирования для компилятора FreePascal. Он поддерживает создание автономных графических и консольных приложений и работает на Linux, MacOSX, iOS, Android, WinCE, Windows и WEB.
- Max/MSP : визуальный язык программирования , который инкапсулирует независимый от платформы код с специфичной для платформы средой выполнения в приложения для macOS и Windows. Кроссплатформенная среда выполнения Android. Он позволяет немодифицированным приложениям Android работать на iOS и macOS.
- Mendix : облачная платформа для разработки приложений с низким кодом.
- MonoCross с открытым исходным кодом : шаблон проектирования модель-представление-контроллер , в котором модель и контроллер являются кроссплатформенными, но представление зависит от платформы. [16]
- Mono : кроссплатформенная версия Microsoft .NET с открытым исходным кодом (фреймворк для приложений и языков программирования).
- MoSync : SDK с открытым исходным кодом для разработки приложений для мобильных платформ в семействе C++.
- Платформа приложений Mozilla : платформа с открытым исходным кодом для создания приложений macOS, Windows и Linux.
- OpenGL : библиотека 3D-графики.
- Pixel Game Maker MV : фирменное программное обеспечение для разработки 2D-игр для Windows, предназначенное для разработки игр для Windows и Nintendo Switch .
- PureBasic : собственный язык и IDE для создания приложений macOS, Windows и Linux.
- ReNative : универсальный SDK для разработки многоплатформенных проектов с помощью React Native. Включает новейшие платформы iOS, tvOS, Android, Android TV, Web, Tizen TV, Tizen Watch, LG webOS, macOS/OSX, Windows, KaiOS, Firefox OS и Firefox TV.
- Qt : платформа приложений и набор инструментов для виджетов для Unix-подобных систем с X11 , Microsoft Windows, macOS и других систем, доступных как по проприетарной лицензии, так и по лицензии с открытым исходным кодом .
- Простая и быстрая мультимедийная библиотека : мультимедийный C++ API , обеспечивающий доступ низкого и высокого уровня к графике, вводу, аудио и т. д.
- Simple DirectMedia Layer : мультимедийная библиотека с открытым исходным кодом, написанная на C, которая создает абстракцию над графикой, звуком и API ввода различных платформ . Он работает на операционных системах, включая Linux, Windows и macOS, и предназначен для игр и мультимедийных приложений.
- Smartface : собственный инструмент разработки приложений для создания мобильных приложений для Android и iOS с использованием редактора дизайна WYSIWYG и редактора кода JavaScript.
- Ткл / Тк
- Titanium Mobile : кроссплатформенная платформа с открытым исходным кодом для разработки под Android и iOS.
- U++ : платформа графического интерфейса C++ для повышения производительности. Включает в себя набор библиотек (GUI, SQL и т.д.) и IDE. Он поддерживает Windows, macOS и Linux.
- Unity : еще один кроссплатформенный SDK, использующий Unity Engine.
- Платформа Uno : Windows, macOS, iOS, Android, WebAssembly и Linux с использованием C#.
- Unreal : кроссплатформенный SDK, использующий Unreal Engine.
- V-Play Engine : V-Play — это SDK для кроссплатформенной разработки, основанный на популярной платформе Qt. Приложения и игры V-Play создаются в Qt Creator.
- WaveMaker : инструмент разработки с низким уровнем кода для создания адаптивных веб-приложений и гибридных мобильных приложений (Android и iOS).
- WinDev : интегрированная среда разработки для Windows, Linux, .Net и Java, а также веб-браузеров. Оптимизирован для деловых и промышленных приложений.
- wxWidgets : набор инструментов для виджетов с открытым исходным кодом, который также является платформой приложения . [17] Он работает на Unix-подобных системах с X11 , Microsoft Windows и macOS.
- Xojo : RAD IDE, использующая объектно-ориентированный язык программирования для компиляции настольных, веб-приложений и приложений для iOS. Xojo поддерживает компиляцию в Windows, macOS, iOS и Linux, а также может создавать скомпилированные веб-приложения, которые можно запускать как автономные серверы или через CGI.
Проблемы
[ редактировать ]При разработке кроссплатформенного программного обеспечения возникает множество проблем.
- Тестирование кросс-платформенных приложений может оказаться значительно более сложным, поскольку на разных платформах может наблюдаться несколько разное поведение или незначительные ошибки. Эта проблема привела к тому, что некоторые разработчики высмеивали кроссплатформенную разработку, называя ее «напиши один раз, отлаживай везде», что является аналогом Sun Microsystems « напиши один раз, работай где угодно ». маркетингового слогана
- Разработчики часто ограничены использованием с наименьшим общим знаменателем подмножества функций , которые доступны на всех платформах. Это может снизить производительность приложения или запретить разработчикам использовать самые продвинутые функции каждой платформы.
- На разных платформах часто используются разные соглашения о пользовательском интерфейсе, которые не всегда учитываются в кроссплатформенных приложениях. Например, приложения, разработанные для macOS и GNOME, должны размещать самую важную кнопку в правой части окна или диалогового окна, тогда как Microsoft Windows и KDE придерживаются противоположного соглашения. Хотя многие из этих различий незначительны, кросс-платформенное приложение, не соответствующее этим соглашениям, может показаться пользователю неуклюжим или чуждым. При быстрой работе такие противоположные соглашения могут даже привести к потере данных , например, в диалоговом окне с подтверждением сохранения или отмены изменений.
- Языки сценариев и байт-код виртуальной машины необходимо транслировать в собственный исполняемый код каждый раз, когда они используются, что приводит к снижению производительности. Это наказание можно смягчить, используя такие методы, как компиляция «точно в срок» ; но некоторые вычислительные затраты могут оказаться неизбежными.
- Различные платформы требуют использования собственных форматов пакетов, таких как RPM и MSI . Многоплатформенные установщики, такие как InstallAnywhere, удовлетворяют эту потребность.
- Кроссплатформенные среды выполнения могут иметь недостатки межплатформенной безопасности, создавая благодатную среду для кроссплатформенных вредоносных программ. [18]
См. также
[ редактировать ]- Кроссплатформенная игра
- Аппаратно-независимый
- Переносимость программного обеспечения
- Список видеоигр, поддерживающих кроссплатформенную игру
- Список наборов виджетов
- Аппаратная виртуализация
- Java (программная платформа)
- Языковая привязка
- Транскомпилятор
- Совместимость двоичного кода
- Ксамарин
- Сравнение пользовательских возможностей платформ обмена сообщениями
- Фреймворки мобильной разработки , многие из которых являются кроссплатформенными.
Ссылки
[ редактировать ]- ^ «Рекомендации по проектированию: глоссарий» . java.sun.com. Архивировано из оригинала 13 февраля 2012 г. Проверено 19 октября 2011 г.
- ^ «Блог SDD Technology: Определение кроссплатформенности» . Технология SDD . Проверено 18 октября 2020 г.
- ^ Ли П. Ричардсон (16 февраля 2016 г.). «Xamarin против Ionic: мобильная, кроссплатформенная игра, перестрелка» .
- ^ Jump up to: а б «Определение платформы» . Информационный проект Linux . Проверено 27 марта 2014 г.
- ^ «О Моно» . mono-project.com . Проверено 17 декабря 2015 г.
- ^ Корти, Саша П. (октябрь 2011 г.). «Обнаружение браузера и функций» . Журнал MSDN . Проверено 28 января 2014 г.
- ^ Чоудхари, СР (2014). «Кроссплатформенное тестирование и сопровождение веб- и мобильных приложений». Сопутствующие материалы 36-й Международной конференции по программной инженерии . стр. 642–645. дои : 10.1145/2591062.2591097 . hdl : 1853/53588 . ISBN 9781450327688 . S2CID 1903037 .
- ^ Мехротра, Праноб (01 декабря 2020 г.). «Пакет Collabora Office получил новый макет для планшетов Android и Chromebook» . XDA-Разработчики . Проверено 15 января 2021 г.
Collabora Office — популярная альтернатива пакету Microsoft Office с открытым исходным кодом. Он основан на LibreOffice и доступен на различных платформах, включая Windows, Linux, iOS и Android. В июле этого года крупное обновление офисного пакета обеспечило поддержку устройств Chrome OS.
- ^ «Collabora Office для iOS и Android стал еще лучше!» . Адфинис . 15 декабря 2020 г. Проверено 15 января 2021 г.
...интерфейсы, оптимизированные для сенсорного управления: один для планшетов, другой для экранов телефонов. ...(iOS, iPadOS, Chromebook, Android).
- ^ «Nextcloud Ubuntu Appliance добавляет Collabora Online в образ Raspberry Pi» . МуйЛинукс . 26 марта 2021 г. Проверено 30 марта 2021 г.
первое жизнеспособное решение для автономного веб-офиса для популярной платформы Raspberry Pi 4.
- ^ Крибба. Quake III Arena , Giant Bombcast , 15 февраля 2013 г.
- ^ Более пристальный взгляд на стартовый комплект Dreamcast Internet.
- ^ Набор инструментов GUI, страница Framework
- ^ «Независимые от платформы часто задаваемые вопросы» . Архивировано из оригинала 16 августа 2008 г. Проверено 25 апреля 2009 г.
- ^ «Кроссплатформенные библиотеки SDK для распознавания документов, медицины, изображений и мультимедиа» . www.leadtools.com . Проверено 03 марта 2021 г.
- ^ «12 преимуществ разработки кроссплатформенных приложений на Xamarin» . ХедВоркс . 15 марта 2019 г.
- ^ Описание WxWidgets
- ^ Уоррен, Том (14 января 2020 г.). «Microsoft прощается с Windows 7 и миллионами компьютеров, на которых она до сих пор работает» . Грань . Проверено 6 февраля 2020 г.