Кроссплатформенное программное обеспечение
Эту страницу предлагается переименовать в Кросс-платформенное программное обеспечение . Пояснение причин и обсуждение — на странице Википедия:К переименованию/27 июня 2016.
Возможно, её текущее название не соответствует нормам современного русского языка и/или правилам именования статей Википедии. Не снимайте пометку о выставлении на переименование до окончания обсуждения. Переименовать в предложенное название, снять этот шаблон |
<imagemap>: неверное или отсутствующее изображение |
В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена.
Вы можете отредактировать эту статью, добавив ссылки на авторитетные источники. Эта отметка установлена 14 октября 2012 года. |
Кроссплатформенное (межплатформенное) программное обеспечение — программное обеспечение, работающее более чем на одной аппаратной платформе и/или операционной системе. Типичным примером является программное обеспечение, предназначенное для работы в операционных системах Linux и Windows одновременно.
Содержание
Как добиваются кроссплатформенности
Кроссплатформенные языки программирования
Кроссплатформенными можно назвать большинство современных высокоуровневых языков программирования. Например, C, С++, Free Pascal — кроссплатформенные языки на уровне компиляции, то есть для этих языков есть компиляторы под различные платформы. Это позволяет — при надлежащем качестве кода — не переписывать основной движок программы, меняются только особые системозависимые части.
Не менее важны для кроссплатформенности стандартизованные библиотеки времени выполнения. В частности, стандартом стала библиотека языка Си (см. POSIX). Из крупных кроссплатформенных библиотек — Qt, GTK+, FLTK, STL, Boost, OpenGL, SDL, OpenAL, OpenCL.
Кроссплатформенные среды исполнения
Ещё на заре ПК компания IBM сделала свой персональный компьютер совместимым с CP/M. Это позволило запускать на нём уже имеющиеся программы.
PHP, Perl, Python, Tcl и Ruby — кроссплатформенные интерпретируемые языки, их интерпретаторы существуют для многих платформ.
Среды исполнения ActionScript Virtual Machine, Java Virtual Machine и .NET также кроссплатформенны, однако на их вход подаётся не исходный текст, а промежуточный код. Поэтому программы, написанные на ActionScript, Java и C#, можно запускать под разными ОС без предварительной перекомпиляции.
Кроссплатформенный пользовательский интерфейс
На разных ОС — независимо от того, как технически достигнута работа в них — стандартные элементы интерфейса имеют разные размеры. Поэтому простое жёсткое позиционирование элементов интерфейса невозможно — под другой ОС они могут налезать друг на друга. Существует несколько подходов.
- Единый стиль, общий для всех ОС. Программы выглядят одинаково под всеми ОС. Так работают интерфейсные библиотеки Java наподобие Swing.
- Плюс: можно жёстко расставлять элементы управления на манер Delphi; оригинальный стиль.
- Минус: системе приходится иметь свои экранные шрифты; стиль отличается от стиля ОС.
- Самоадаптирующийся интерфейс, подстраивающий сетку под реальные размеры элементов управления. Типичные примеры — Qt, wxWidgets, XUL.
- Плюс: стандартный стиль ОС, очень быстрый и «скинующийся» под Windows XP, Vista и 7; некоторая автоматизация локализации.
- Минус: чтобы собрать самоадаптирующуюся сетку, требуется квалифицированный программист; затруднена плотная компоновка.
- Гибридный подход реализован в GTK+.
- Плюс: шрифты можно брать из системы, а не «тащить» свои; некоторая автоматизация локализации.
- Минус: берёт все недостатки от первых двух подходов. Стиль отличается от стиля ОС; затруднена плотная компоновка.
В любом случае, под другими ОС требуется хотя бы минимальное тестирование, так как возможны ошибки компоновки.
Условная компиляция
Даже несмотря на широкую, в общем, стандартизацию аппаратного и программного обеспечения, программисту часто приходится налаживать ветви под разные ОС, включая ту или другую с помощью условной компиляции.
Браузер Mozilla Firefox имеет разные комплекты иконок под разные ОС.
Прикладные программы
Большое количество прикладных программ также являются кроссплатформенными. Особенно это качество выражено у программ, изначально разработанных для UNIX-подобных операционных систем. Важным условием их переносимости на другие платформы является совместимость платформ с рекомендациями POSIX, а также существование компилятора GCC для платформы, на которую осуществляется перенос.
Операционные системы
Современные операционные системы также часто являются кроссплатформенными. Например, операционные системы с открытым исходным кодом, например, NetBSD, Linux, FreeBSD, AROS могут работать на нескольких различных платформах, чаще всего это x86, m68k, PowerPC, Alpha, AMD64, SPARC.Первый выпуск Microsoft Windows NT 4 вышедший в 1996 году поддерживал четыре платформы (x86, Alpha, MIPS и PowerPC),в дальнейших версиях Windows NT осталась только поддержка платформы х86.Современная Microsoft Windows может работать как на платформе Intel x86, так и на Intel Itanium (точнее, для Itanium есть только версии Windows 2000/XP, Windows 2003 и Windows 2008, после чего поддержка была свёрнута). Операционная система NetBSD является самой переносимой[1], она портирована на большинство существующих платформ.
Кроссплатформенные IDE
IDE Free Pascal, IDE Lazarus, Qt Creator работают на разных операционных системах: Linux, Windows и др., что сделало их конкурентом даже виртуальной машины Java.[2].
Эмуляция
Если программа не предназначена для исполнения (запуска) на определённой платформе, но для этой платформы существует эмулятор платформы, базовой для данной программы, то программа может быть исполнена в среде эмулятора.
Обычно исполнение программы в среде эмулятора приводит к снижению производительности по сравнению с аналогичными программами, для которых платформа является базовой, так как значительная часть ресурсов системы расходуется на выполнение функций эмулятора.
См. также
Примечания
Ссылки
- [www.crossplatform.ru/ Всё о кроссплатформенном программировании]
- [codedocs.ru/xamarin/sozdanie-kross-platformennyh-prilozhenij.html Создание кроссплатформенных приложений] - Рекомендации по разработке мобильных приложений в Xamarin.