Из Википедии, бесплатной энциклопедии
  (Перенаправлено с кроссплатформенного )
Перейти к навигации Перейти к поиску

В вычислении , кросс-платформенное программное обеспечение (также мульти-программная платформа или независимая от платформы программного обеспечения ) является компьютерной программой , которая реализована на нескольких вычислительных платформах. [1] Кросс-платформенное программное обеспечение можно разделить на два типа; один требует индивидуальной сборки или компиляции для каждой поддерживаемой платформы, а другой может быть запущен непосредственно на любой платформе без специальной подготовки, например, программное обеспечение, написанное на интерпретируемом языке или предварительно скомпилированный переносимый байт-код, для которого интерпретаторы или среда выполнения пакеты являются общими или стандартными компонентами всех платформ. [2]

Например, кроссплатформенное приложение может работать в Microsoft Windows , Linux и macOS . Кросс-платформенные программы могут работать на любом количестве существующих платформ или всего на двух платформах. Кросс-платформенные фреймворки (такие как Codename One , Kivy , Qt , Flutter , NativeScript , Xamarin , Phonegap , Ionic и React Native ) существуют для помощи в кроссплатформенной разработке. [3]

Платформы [ править ]

Платформа может относиться к типу процессора (ЦП) или другому оборудованию, на котором работает данная операционная система или приложение , типу операционной системы на компьютере или комбинации типа оборудования и типа операционной системы, работающей на нем. [4] Примером общей платформы является Microsoft Windows, работающая на архитектуре x86 . Другие известные платформы настольных компьютеров включают Linux / Unix и macOS, обе из которых сами по себе являются кроссплатформенными. [4] Однако существует множество устройств, например смартфоны.которые также фактически являются компьютерными платформами, но о них редко думают подобным образом. Прикладное программное обеспечение может быть написано в зависимости от функций конкретной платформы - оборудования, операционной системы или виртуальной машины, на которой оно работает. Платформа Java - это платформа виртуальных машин, которая работает во многих операционных системах и типах оборудования, и является общей платформой для написания программного обеспечения.

Аппаратные платформы [ править ]

Аппаратная платформа может относиться к архитектуре набора команд . Например: архитектура x86 и ее варианты, такие как IA-32 и x86-64 . На этих машинах часто работает одна версия Microsoft Windows [5], хотя они могут работать и с другими операционными системами, включая Linux, OpenBSD , NetBSD , macOS и FreeBSD .

Эти 32-разрядные архитектуры ARM (и более новые 64-разрядные версии) является общим на смартфоны и планшетные компьютеры , которые работают Android , IOS , и других мобильных операционных систем .

Программные платформы [ править ]

Программные платформы могут быть либо операционной системой, либо средой программирования , хотя чаще это комбинация того и другого. Заметным исключением из этого правила является Java , которая использует независимую от операционной системы виртуальную машину для своего скомпилированного кода, известного в мире Java как байт-код . Примеры программных платформ:

  • Ежевика
  • Android для смартфонов и планшетных компьютеров (x86, ARM)
  • iOS ( ARM )
  • Microsoft Windows (x86, ARM )
    • Интерфейс командной строки , также известный под именами реализации .NET Framework (от Microsoft) и кроссплатформенным вариантом Mono (ранее Novell, а теперь Xamarin [6] )
  • Ява
  • Веб-браузеры - более или менее совместимы друг с другом, работают с веб-приложениями на JavaScript.
  • Linux (x86, PowerPC, ARM и другие архитектуры)
  • macOS (x86, PowerPC (на 10.5 и ниже) и ARM [7] (на Apple Silicon или 11.0 и выше))
  • Mendix
  • Solaris (SPARC, x86)
  • SymbianOS
  • SPARC
  • PlayStation 4 (x86), PlayStation 3 (на базе PowerPC) и PlayStation Vita (ARM)
  • Unix
  • Xbox
Незначительный / исторический
  • AmigaOS (m68k), AmigaOS 4 (PowerPC), AROS (x86, PowerPC, m68k), MorphOS (PowerPC)
  • Atari TOS , MiNT
  • BSD (многие платформы; см. NetBSDnet, например [ требуется пояснение ] )
  • Системы типа DOS на x86: MS-DOS , IBM PC DOS , DR-DOS , FreeDOS
  • OS / 2 , eComStation

Платформа Java [ править ]

Как отмечалось ранее, платформа Java является исключением из общего правила, согласно которому операционная система является программной платформой. Язык Java обычно компилируется в виртуальную машину: виртуальный ЦП, на котором выполняется весь код, написанный для языка. Это позволяет запускать один и тот же исполняемый двоичный файл во всех системах, реализующих виртуальную машину Java (JVM). Программы Java могут выполняться изначально с использованием процессора Java . Это нечасто и в основном используется для встраиваемых систем.

Код Java, работающий в JVM, имеет доступ к службам, связанным с ОС, таким как дисковый ввод-вывод и доступ к сети, если предоставлены соответствующие привилегии. JVM делает системные вызовы от имени приложения Java. Эта настройка позволяет пользователям выбирать соответствующий уровень защиты в зависимости от ACL . Например, дисковый и сетевой доступ обычно разрешен для настольных приложений, но не для апплетов на основе браузера . JNI также можно использовать для обеспечения доступа к специфическим функциям операционной системы.

В настоящее время программы Java Standard Edition могут работать в Microsoft Windows, macOS, нескольких Unix-подобных операционных системах и еще нескольких не-UNIX-подобных операционных системах, таких как встроенные системы. Для мобильных приложений используются плагины браузера для устройств на базе Windows и Mac, а Android имеет встроенную поддержку Java. Также существуют подмножества Java, такие как Java Card или Java Platform, Micro Edition , предназначенные для устройств с ограниченными ресурсами.

Реализации [ править ]

Чтобы часть программного обеспечения считалась кроссплатформенной, она должна быть способна работать на более чем одной компьютерной архитектуре или операционной системе. Разработка такой программы может занять много времени, поскольку разные операционные системы имеют разные интерфейсы прикладного программирования (API). Например, Linux использует другой API для прикладного программного обеспечения, чем Windows.

Программное обеспечение, написанное для конкретной операционной системы, не работает автоматически на всех архитектурах, поддерживаемых операционной системой. Одним из примеров по состоянию на август 2006 года был OpenOffice.org , который изначально не работал на процессорах AMD64 или Intel 64 , реализующих стандарты x86-64 для компьютеров; с тех пор это было изменено, и пакет программного обеспечения OpenOffice.org «в основном» перенесен на эти 64-битные системы. [8] Это также означает, что только потому, что программа написана на популярном языке программирования, таком как C или C ++, это не означает, что он будет работать во всех операционных системах, поддерживающих этот язык программирования, или даже в одной и той же операционной системе с другой архитектурой.

Веб-приложения [ править ]

Веб-приложения обычно описываются как кроссплатформенные, потому что в идеале они доступны из любого из различных веб-браузеров в разных операционных системах. Такие приложения обычно используют архитектуру системы клиент-сервер и сильно различаются по сложности и функциональности. Эта широкая вариативность значительно усложняет задачу кросс-платформенной совместимости, которая обычно противоречит цели расширенной функциональности.

Базовые веб-приложения выполняют всю или большую часть обработки с сервера без отслеживания состояния и передают результат клиентскому веб-браузеру. Все взаимодействие пользователя с приложением состоит из простого обмена запросами данных и ответами сервера. Эти типы приложений были нормой на ранних этапах разработки приложений World Wide Web . Такие приложения следуют простой модели транзакций , идентичной модели обслуживания статических веб-страниц . Сегодня они все еще относительно распространены, особенно там, где кроссплатформенная совместимость и простота считаются более важными, чем расширенные функции.

Яркие примеры передовых веб-приложений включают веб-интерфейс для Gmail , A9.com , веб- сайт Google Maps и службу Live Search (теперь Bing ) от Microsoft. Такие передовые приложения обычно зависят от дополнительных функций, имеющихся только в последних версиях популярных веб-браузеров. Эти зависимости включают Ajax , JavaScript , Dynamic HTML , SVG и другие компоненты полнофункциональных веб-приложений . Старые версии популярных веб-браузеров, как правило, не поддерживают определенные функции.

Стратегии дизайна [ править ]

Из-за конкурирующих интересов кроссплатформенной совместимости и расширенной функциональности появилось множество альтернативных стратегий дизайна веб-приложений. К таким стратегиям относятся:

Изящная деградация

Изящная деградация пытается предоставить одинаковые или похожие функции для всех пользователей и платформ, уменьшая при этом эту функциональность до наименьшего общего знаменателя для более ограниченных клиентских браузеров. Например, пользователь, пытающийся использовать браузер с ограниченными возможностями для доступа к Gmail, может заметить, что Gmail переключается в базовый режим с ограниченной функциональностью. Это отличается от других кроссплатформенных методов, которые пытаются обеспечить эквивалентную функциональность, а не только адекватную функциональность, на разных платформах.

Несколько кодовых баз

Несколько приложений с кодовой базой поддерживают разные кодовые базы для разных (аппаратных средств и ОС) платформ с эквивалентной функциональностью. Это, очевидно, требует дублирования усилий при поддержании кода, но может оказаться полезным там, где количество кода, специфичного для платформы, велико.

Единая кодовая база

Эта стратегия основана на наличии одной кодовой базы, которая может быть скомпилирована в несколько форматов, зависящих от платформы. Один из методов - условная компиляция . При использовании этой техники код, общий для всех платформ, не повторяется. Блоки кода, относящиеся только к определенным платформам, делаются условными, поэтому они интерпретируются или компилируются только при необходимости. Другой метод - разделение функций, при котором отключаются функции, не поддерживаемые клиентскими браузерами или операционными системами, при этом пользователю предоставляется полное приложение. (См. Также: Разделение проблем). Этот метод используется в веб-разработке, где интерпретируемый код (как в языках сценариев) может запрашивать платформу, на которой он работает, для выполнения различных блоков условно. [9]

Сторонние библиотеки

Сторонние библиотеки пытаются упростить кроссплатформенные возможности, скрывая сложности дифференциации клиентов за единым унифицированным API.

Адаптивный веб-дизайн

Адаптивный веб-дизайн (RWD) - это подход к веб-дизайну, направленный на создание визуального макета сайтов для обеспечения оптимального просмотра - легкое чтение и навигация с минимумом изменения размера, панорамирования и прокрутки - на широком спектре устройств, от мобильных телефоны к мониторам настольных компьютеров. В этом методе используется мало или совсем не используется специфичный для платформы код.

Стратегии тестирования [ править ]

Одним из сложных аспектов проектирования кроссплатформенных веб-приложений является необходимость тестирования программного обеспечения . В дополнение к сложностям, упомянутым ранее, существует дополнительное ограничение, заключающееся в том, что некоторые веб-браузеры запрещают установку разных версий одного и того же браузера в одной и той же операционной системе. Хотя существует несколько подходов к разработке, которые компании используют для нацеливания на несколько платформ, все они приводят к созданию программного обеспечения, требующего значительных ручных усилий для тестирования и обслуживания на поддерживаемых платформах. [10] Такие методы, как полная виртуализация , иногда используются в качестве решения этой проблемы.

Используя такие инструменты, как объектная модель страницы, кросс-платформенные тесты могут быть написаны таким образом, чтобы один тестовый пример можно было использовать для нескольких версий приложения. Пока разные версии имеют одинаковые пользовательские интерфейсы, обе версии можно тестировать одновременно с помощью одного тестового примера.

Традиционные приложения [ править ]

Веб-приложения становятся все более популярными, но многие пользователи компьютеров по-прежнему используют традиционное прикладное программное обеспечение, которое не зависит от архитектуры клиент / веб-сервер. Разница между традиционными и веб-приложениями не всегда очевидна. Функции, методы установки и архитектуры для веб-приложений и традиционных приложений пересекаются и стирают различия. Тем не менее, это упрощающее различие является общим и полезным обобщением.

Двоичное программное обеспечение [ править ]

Традиционно в современных вычислениях прикладное программное обеспечение распространяется среди конечных пользователей в виде двоичных файлов, особенно исполняемых файлов . Исполняемые файлы поддерживают только ту операционную систему и компьютерную архитектуру, для которых они были созданы - это означает, что создание единого кроссплатформенного исполняемого файла было бы сложной задачей и обычно заменяется предложением выбора исполняемых файлов для поддерживаемых платформ.

Для программного обеспечения, которое распространяется в виде двоичного исполняемого файла, такого как программное обеспечение, написанное на 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 , BSD и Android . Collabora создает LibreOffice для веб-приложений Collabora Online , Windows, macOS, Linux, смартфонов и планшетов Android, iPhone и iPad с iOS , Chromebook и Chromebox с ОС Chrome . [11] [12] Многие из них поддерживаются на нескольких аппаратных платформах с архитектурой процессора, включая IA-32 , x86-64 и реализации ARM .[13]


Скрипты и интерпретируемые языки [ править ]

Сценарий можно считать кроссплатформенным, если его интерпретатор доступен на нескольких платформах и сценарий использует только возможности, предоставляемые языком. То есть сценарий, написанный на Python для Unix-подобной системы, скорее всего, будет работать с небольшими изменениями или без них в Windows, потому что Python также работает в Windows; существует также несколько реализаций Python, которые будут запускать одни и те же сценарии (например, IronPython для .NET Framework ). То же самое касается многих языков программирования с открытым исходным кодом , которые доступны и являются языками сценариев .

В отличие от двоичных исполняемых файлов, один и тот же сценарий можно использовать на всех компьютерах, на которых установлено программное обеспечение для его интерпретации. Это связано с тем, что сценарий обычно хранится в виде обычного текста в текстовом файле . Однако могут возникнуть некоторые проблемы, такие как тип символа новой строки, который находится между строками. Как правило, однако, для того, чтобы сценарий, написанный для одной системы, выполнялся в другой, требуется немного или совсем не работать.

Вот некоторые довольно популярные кроссплатформенные языки сценариев или интерпретируемые языки :

  • bash - оболочка Unix, обычно запускаемая в Linux и других современных Unix-подобных системах, а также в Windows через уровень совместимости Cygwin POSIX .
  • Perl - язык сценариев, впервые выпущенный в 1987 году. Используется для программирования CGI WWW , небольших задач системного администрирования и многого другого.
  • PHP - наиболее популярный язык сценариев для веб-приложений.
  • Python - современный язык сценариев, в котором основное внимание уделяется быстрой разработке приложений и простоте написания, а не эффективности выполнения программы.
  • Ruby - язык сценариев, цель которого - быть объектно-ориентированным и легким для чтения. Также может использоваться в Интернете через Ruby on Rails .
  • Tcl - динамический язык программирования, подходящий для широкого круга задач, включая веб-приложения и настольные приложения, создание сетей, администрирование, тестирование и многое другое.

Видеоигры [ править ]

Кроссплатформенность или мультиплатформенность - это термин, который также может относиться к видеоиграм, выпущенным на различных игровых консолях , специализированных компьютерах, предназначенных для игры в игры. Примеры кросс-платформенных видеоигр включают в себя: Miner 2049er , Tomb Raider: Legend , серия FIFA , серия НХЛ и Minecraft .

Каждая из них была выпущена для различных игровых платформ, таких как Wii , PlayStation 3 , Xbox 360 , персональных компьютеров (ПК) и мобильных устройств .

Характеристики конкретной системы могут увеличивать время, необходимое для реализации видеоигры на нескольких платформах. Таким образом, видеоигра может быть сначала выпущена на нескольких платформах, а затем выпущена на остальных платформах. Обычно такая ситуация возникает при выпуске новой игровой системы, потому что разработчикам видеоигр необходимо ознакомиться с аппаратным и программным обеспечением, связанным с новой консолью.

Некоторые игры могут не стать кроссплатформенными из-за лицензионных соглашений между разработчиками и производителями игровых консолей, которые ограничивают разработку игры одной конкретной консолью. Например, Disney может создать игру с намерением выпустить ее на новейших игровых консолях Nintendo и Sony . Если Disney сначала лицензирует игру у Sony, Disney может взамен потребовать выпустить игру исключительно на консоли Sony на короткое время или на неопределенный срок, фактически запретив кроссплатформенный выпуск на этот период.

Кроссплатформенная игра [ править ]

Некоторые разработчики реализовали средства для игры в онлайн-игры на разных платформах. Psyonix , Epic Games , Microsoft и Valve обладают технологиями, которые позволяют игрокам Xbox 360 и PlayStation 3 играть с игроками на ПК, оставляя решение о том, какую платформу использовать. Первой игрой, которая обеспечила такой уровень интерактивности между ПК и консольными играми, была Quake 3 . [14]

К играм с кроссплатформенной сетевой игрой относятся 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в системе может быть другой. Хотя это простой подход к проблеме, он может быть значительно более дорогостоящим с точки зрения затрат на разработку, времени разработки или того и другого, особенно для юридических лиц. Идея состоит в том, чтобы создать более двух разных программ, которые могут вести себя одинаково друг с другом. Также возможно, что этот способ разработки кроссплатформенного приложения приведет к большему количеству проблем с отслеживанием и исправлением ошибок, потому что два разных исходных дерева будут иметь разных программистов и, следовательно, разные дефекты в каждой версии.

Другой подход, который используется, состоит в том, чтобы полагаться на уже существующее программное обеспечение, которое скрывает различия между платформами - так называемая абстракция платформы - таким образом, что сама программа не знает, на какой платформе она работает. Можно сказать, что такие программы не зависят от платформы . Программы, работающие на виртуальной машине Java (JVM), построены таким образом.

Некоторые приложения смешивают различные методы кроссплатформенного программирования для создания окончательного приложения. Примером этого является веб-браузер Firefox, который использует абстракцию для создания некоторых компонентов нижнего уровня, отдельные исходные поддеревья для реализации специфичных для платформы функций (например, GUI) и реализацию более чем одного языка сценариев, чтобы облегчить простота переноски . Firefox реализует XUL , CSS и JavaScript для расширения браузера в дополнение к классическим плагинам браузера в стиле Netscape . Большая часть самого браузера написана также на XUL, CSS и JavaScript.

Наборы инструментов и среды для кроссплатформенного программирования [ править ]

Существует ряд инструментов [15] [16], которые помогают облегчить процесс кроссплатформенного программирования:

  • 8-й: кроссплатформенный язык разработки, использующий Juce в качестве уровня графического интерфейса пользователя. В настоящее время он поддерживает следующие платформы: Android, iOS, Windows, macOS, Linux и Raspberry Pi.
  • Anant Computing : платформа мобильных приложений, которая работает на всех индийских языках, включая их клавиатуры, которая также поддерживает производительность AppWallet и Native во всех операционных системах.
  • AppearIQ Платформа , поддерживающая рабочий процесс разработки и развертывания приложений в корпоративной среде. Собственно разработанные контейнеры представляют аппаратные функции мобильных устройств или планшетов через API для кода HTML5, что облегчает разработку мобильных приложений, работающих на разных платформах.
  • Боден: кроссплатформенная структура пользовательского интерфейса для различных платформ, написанная на C ++.
  • Cairo : Бесплатная библиотека программного обеспечения, используемая для обеспечения независимого от устройства API на основе векторной графики. Он предназначен для предоставления примитивов для двухмерного рисования в нескольких различных серверных модулях. Cairo написан на C и имеет привязки для многих языков программирования.
  • Cocos2d : набор инструментов и игровой движок с открытым исходным кодом для разработки двухмерных и простых трехмерных кроссплатформенных игр и приложений.
  • Codename One : кросс-платформенный фреймворк с открытым исходным кодом Write Once Run Anywhere (WORA) для разработчиков Java и Kotlin.
  • Delphi : кроссплатформенная IDE, использующая язык Паскаль для разработки. В настоящее время поддерживает Android, iOS, Windows, macOS.
  • Ecere SDK: кроссплатформенный графический интерфейс и набор инструментов для 2D / 3D-графики и IDE, написанный на eC и с поддержкой дополнительных языков, таких как C и Python . В настоящее время он поддерживает Linux, FreeBSD, Windows, Android, macOS и Интернет через Emscripten или Binaryen (WebAssembly).
  • Eclipse : кроссплатформенная среда разработки с открытым исходным кодом. Реализован на Java с настраиваемой архитектурой, которая поддерживает множество инструментов для разработки программного обеспечения. Дополнения доступны для нескольких языков, включая Java и C ++.
  • FLTK : еще один кроссплатформенный инструментарий с открытым исходным кодом, но более легкий, поскольку он ограничивается графическим интерфейсом.
  • Flutter : кроссплатформенный UI-фреймворк для Android и iOS, разработанный Google .
  • fpGUI : набор инструментов виджетов с открытым исходным кодом, полностью реализованный в Object Pascal. В настоящее время он поддерживает Linux, Windows и немного Windows CE.
  • GeneXus : решение для быстрой разработки программного обеспечения Windows для создания и развертывания кроссплатформенных приложений на основе представления знаний и поддержки C # , COBOL , Java, включая интеллектуальные устройства Android и BlackBerry, Objective-C для мобильных устройств Apple , RPG , Ruby , Visual Basic и Visual FoxPro .
  • GLBasic : БАЗОВЫЙ диалект и компилятор, который генерирует код C ++. Он включает кросс-компиляторы для многих платформ и поддерживает множество платформ (Windows, Mac, Linux, Android, iOS и некоторые экзотические портативные устройства).
  • Godot : кроссплатформенный SDK, использующий Godot Engine.
  • GTK + : набор инструментов виджетов с открытым исходным кодом для Unix-подобных систем с X11 и Microsoft Windows.
  • Haxe : кроссплатформенный язык с открытым исходным кодом.
  • Juce : инфраструктура приложений, написанная на C ++, используемая для написания собственного программного обеспечения во многих системах (Microsoft Windows, POSIX, macOS) без изменения кода.
  • Киви : кроссплатформенный UI-фреймворк с открытым исходным кодом, написанный на Python . Он поддерживает Android , iOS , GNU / Linux , OS X , Windows и Raspberry Pi .
  • LEADTOOLS: кроссплатформенные библиотеки SDK для интеграции технологий распознавания, документирования, медицины, обработки изображений и мультимедиа в Windows, iOS, macOS, Android, Linux и веб-приложения. [17]
  • Lazarus : среда программирования для компилятора FreePascal. Он поддерживает создание автономных графических и консольных приложений и работает в Linux, MacOSX, iOS, Android, WinCE, Windows и WEB.
  • Max / MSP : визуальный язык программирования, который инкапсулирует независимый от платформы код с зависящей от платформы средой выполнения в приложения для macOS и Windows. Кроссплатформенная среда выполнения Android. Это позволяет немодифицированным приложениям Android работать на iOS и macOS.
  • Mendix : облачная платформа для разработки приложений с низким уровнем кода.
  • MonoCross : шаблон проектирования модель-представление-контроллер с открытым исходным кодом, в котором модель и контроллер являются общими кроссплатформенными, но представление зависит от платформы. [18]
  • Mono : кроссплатформенная версия Microsoft .NET с открытым исходным кодом (платформа для приложений и языков программирования).
  • MoSync : SDK с открытым исходным кодом для разработки приложений для мобильных платформ в семействе C ++.
  • Платформа приложений Mozilla : платформа с открытым исходным кодом для создания приложений для macOS, Windows и Linux.
  • Кроссплатформенный фреймворк JavaScript / TypeScript для разработки под Android и iOS.
  • OpenGL : кроссплатформенная библиотека трехмерной графики.
  • 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 , обеспечивающий низко- и высокоуровневый доступ к графике, вводу, аудио и т. Д.
  • Простой уровень DirectMedia : кроссплатформенная мультимедийная библиотека с открытым исходным кодом, написанная на C, которая создает абстракцию над графикой, звуком и входными API различных платформ . Он работает во многих операционных системах, включая Linux, Windows и macOS, и предназначен для игр и мультимедийных приложений.
  • Smartface : кроссплатформенный инструмент разработки собственных приложений для создания мобильных приложений для Android и iOS с использованием редактора дизайна WYSIWYG с редактором кода JavaScript.
  • Tcl / Tk
  • Ultimate ++ : кроссплатформенная среда быстрой разработки приложений на C ++, ориентированная на продуктивность программистов. Он включает в себя набор библиотек (GUI, SQL и др.) И интегрированную среду разработки. Он поддерживает Windows и Unix-подобные ОС. U ++ конкурирует с популярными языками сценариев, сохраняя при этом характеристики среды выполнения C / C ++. Он имеет собственную интегрированную среду разработки TheIDE, в которой используется технология BLITZ-build для ускорения перестроек C ++ до 4 раз.
  • 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 (также с поддержкой Интернета и интрасети ). Программное обеспечение для разработки, оптимизированное для создания профессиональных приложений для управления бизнесом, бухгалтерского учета, промышленных приложений, управления планированием, программного обеспечения для кассовых аппаратов, программного обеспечения для выставления счетов. Главное преимущество: скорость разработки за счет интеграции готовых модулей (редактирование, управление штрих-кодами, ввод данных, планирование и т. Д.), Которые значительно сокращают количество строк кода. Windev wlanguage - это процедурный язык программирования, который обеспечивает императивное программирование и объектно-ориентированное программирование.
  • wxWidgets : набор инструментов виджетов с открытым исходным кодом, который также является фреймворком приложения . [19] Он работает в Unix-подобных системах с X11 , Microsoft Windows и macOS. Он позволяет приложениям, написанным для его использования, работать на всех поддерживаемых им системах, если приложение не использует в дополнение к нему какое-либо специфичное для операционной системы программирование.
  • Xojo : RAD IDE, разработанная Xojo, Inc., которая использует объектно-ориентированный язык программирования для создания настольных, веб-приложений и приложений для iOS. Xojo создает собственные скомпилированные настольные приложения для macOS, Windows, Linux и Raspberry Pi. Он создает скомпилированные веб-приложения, которые можно запускать как автономные серверы или через CGI. И недавно добавлена ​​возможность создавать собственные приложения для iOS.
  • Cosmopolitan / APE : Cosmopolitan libc - это среда выполнения C для процессора x64 для создания так называемого «αcτµαlly pδrταblε εxεcµταblε» , написания программного обеспечения для Linux 2.6+ с использованием подмножества Linux ABI с GCC и обеспечения работы программ только на Windows 8+, macOS и BSD.

Проблемы кроссплатформенной разработки [ править ]

Есть определенные проблемы, связанные с кроссплатформенной разработкой. Некоторые из них включают:

  • Тестирование кроссплатформенных приложений может быть значительно более сложным, поскольку разные платформы могут демонстрировать немного разное поведение или незначительные ошибки. Эта проблема заставила некоторых разработчиков высмеивать кроссплатформенную разработку как «напиши один раз, отлаживай везде», взяв за основу маркетинговый слоган Sun Microsystems « напиши один раз, работай везде ».
  • Разработчики часто ограничиваются использованием подмножества функций с наименьшим общим знаменателем, которые доступны на всех платформах. Это может снизить производительность приложения или запретить разработчикам использовать наиболее продвинутые функции каждой платформы.
  • Различные платформы часто имеют разные соглашения о пользовательском интерфейсе, которые не всегда поддерживаются кроссплатформенными приложениями. Например, приложения, разработанные для macOS и GNOME , должны размещать наиболее важную кнопку в правой части окна или диалогового окна, тогда как Microsoft Windows и KDE придерживаются противоположного соглашения. Хотя многие из этих различий незначительны, кроссплатформенное приложение, которое не соответствует этим соглашениям, может показаться пользователю неуклюжим или чуждым. При быстрой работе такие противоположные соглашения могут даже привести к потере данных , например, в диалоговом окне, подтверждающем, хочет ли пользователь сохранить или отменить изменения в файле.
  • Языки сценариев и виртуальные машины должны переводиться в собственный исполняемый код каждый раз при выполнении приложения, что снижает производительность. Этот штраф можно уменьшить, используя передовые методы, такие как своевременная компиляция ; но даже при использовании таких методов некоторые вычислительные затраты могут быть неизбежны.
  • Различные платформы требуют использования собственных форматов пакетов, таких как RPM и MSI . Мультиплатформенные установщики, такие как InstallAnywhere, удовлетворяют эту потребность.
  • Кросс-платформенные среды выполнения могут иметь недостатки межплатформенной безопасности, создавая благоприятную среду для кроссплатформенного вредоносного ПО. [20]

См. Также [ править ]

  • Жир двоичный
  • Кросс-платформенная игра
  • Аппаратно-независимый
  • Список видеоигр, поддерживающих кроссплатформенную игру
  • Список наборов инструментов для виджетов
  • Виртуализация платформы
  • Java (программная платформа)
  • Привязка к языку
  • Транскомпилятор
  • Совместимость двоичного кода
  • Xamarin
  • Сравнение пользовательских возможностей платформ обмена сообщениями

Ссылки [ править ]

  1. ^ «Рекомендации по дизайну: глоссарий» . java.sun.com . Проверено 19 октября 2011 .
  2. ^ «Блог о технологиях SDD: определение кроссплатформенности» . Технология SDD . Проверено 18 октября 2020 .
  3. ^ Ли П. Ричардсон (2016-02-16). «Xamarin vs Ionic: Лихит лихит 161616161 Mobile, Cross Platform, Shootout» .
  4. ^ a b «Определение платформы» . Информационный проект Linux . Проверено 27 марта 2014 .
  5. ^ На веб-сайте Net Marketshare Windows (все варианты) занимала ~ 89% доли рынка по состоянию на март 2011 г.
  6. ^ "О Моно" . mono-project.com . Проверено 17 декабря 2015 .
  7. ^ «Apple объявляет о переходе Mac на кремний Apple» . Apple Newsroom . Проверено 8 декабря 2020 .
  8. ^ Перенос на x86-64 (AMD64, EM64T) - Apache OpenOffice Wiki . Wiki.services.openoffice.org (22.06.2012). Проверено 17 июля 2013.
  9. Corti, Sascha P. (октябрь 2011 г.). «Обнаружение браузера и функций» . Журнал MSDN . Проверено 28 января 2014 .
  10. ^ Чудхари, СР (2014). «Кросс-платформенное тестирование и сопровождение веб и мобильных приложений». Сопутствующие материалы 36-й Международной конференции по программной инженерии - ICSE Companion 2014 : 642–645. DOI : 10.1145 / 2591062.2591097 . ISBN 9781450327688. S2CID  1903037 .
  11. ^ Mehrotra, Pranob (2020-12-01). «Пакет Collabora Office получил новый макет для планшетов Android и Chromebook» . XDA-Developers . Проверено 15 января 20 . Collabora Office - популярная альтернатива пакету Microsoft Office с открытым исходным кодом. Он основан на LibreOffice и доступен на различных платформах, включая Windows, Linux, iOS и Android. В июле этого года в крупном обновлении офисного пакета появилась поддержка устройств с Chrome OS.
  12. ^ "Collabora Office для iOS и Android стал еще лучше!" . Адфинис . 2020-12-15 . Проверено 15 января 20 . ... сенсорные оптимизированные интерфейсы: один для планшетов и один для экранов телефонов. ... (iOS, iPadOS, Chromebook, Android).
  13. ^ «Nextcloud Ubuntu Appliance добавляет Collabora Online в образ Raspberry Pi» . MuyLinux . 2021-03-26 . Проверено 30 марта 2021 . первое жизнеспособное решение для самостоятельного размещения веб-офиса для популярной платформы Raspberry Pi 4
  14. ^ Крибба. Quake III Arena , Giant Bombcast , 15 февраля 2013 г.
  15. ^ Набор инструментов GUI, страница Framework
  16. ^ "Часто задаваемые вопросы, не зависящие от платформы" . Архивировано из оригинала на 2008-08-16 . Проверено 25 апреля 2009 .
  17. ^ «Межплатформенные библиотеки SDK для распознавания, документирования, медицины, визуализации и мультимедиа» . www.leadtools.com . Источник 2021-03-03 .
  18. ^ «12 преимуществ разработки кроссплатформенных приложений Xamarin» . HeadWorks . 15 марта 2019.
  19. ^ Описание WxWidgets
  20. ^ Уоррен, Том (2020-01-14). «Microsoft прощается с Windows 7 и миллионами компьютеров, на которых она еще установлена» . Грань . Проверено 6 февраля 2020 .