Interested Article - Кроссплатформенность

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

Swing выглядит одинаково на всех ОС.
Mozilla Firefox , использующий XUL , оформляет окна в стиле ОС (в данном случае — Linux ).

Кроссплатформенные языки программирования

Кроссплатформенными можно назвать большинство современных высокоуровневых языков программирования . Например, Си , C++ , Free Pascal , FreeBASIC , PureBasic — кроссплатформенные языки на уровне компиляции, то есть для этих языков есть компиляторы под различные платформы. Это позволяет — при надлежащем качестве кода — не переписывать основной движок программы, меняются только особые системозависимые части.

Не менее важны для кроссплатформенности стандартизованные библиотеки среды выполнения . В частности, стандартом стала библиотека языка Си ( POSIX ). Из крупных кроссплатформенных библиотек — Qt , GTK+ , FLTK , STL , Boost , OpenGL , SDL , OpenAL , OpenCL .

Существуют кросс-компиляторы — компиляторы, генерирующие исполняемый код для платформы, отличной от той, на которой запущен сам компилятор.

Кроссплатформенные среды исполнения

PHP , Perl , Python , Tcl и Ruby — кроссплатформенные интерпретируемые языки, их интерпретаторы существуют для многих платформ.

Среды исполнения ActionScript Virtual Machine , Java Virtual Machine и .NET также кроссплатформенны, однако на их вход подаётся не исходный текст , а промежуточный код . Поэтому программы, написанные на ActionScript , Java и C# , можно запускать под разными операционными системами без предварительной перекомпиляции.

Кроссплатформенный пользовательский интерфейс

На разных операционных системах и средах — независимо от того, как технически достигнута работа в них — стандартные элементы интерфейса имеют разные размеры. Поэтому простое жёсткое позиционирование элементов интерфейса невозможно — в другой операционной системе (среде) они могут «налезать» друг на друга, «расплываться», «пьянеть». Существует несколько подходов:

  1. Единый стиль, общий для всех операционных систем, программы выглядят одинаково под всеми системами. Так работают интерфейсные библиотеки Java наподобие Swing .
    • Плюс: можно жёстко расставлять элементы управления на манер Delphi, оригинальный стиль.
    • Минус: системе приходится иметь свои экранные шрифты, и стиль отличается от стиля ОС.
  2. Самоадаптирующийся (адаптивный) интерфейс, подстраивающий сетку под реальные размеры элементов управления. Типичные примеры — Qt , wxWidgets , XUL .
    • Плюс: стандартный стиль операционной системы, очень быстрый и « скинующийся » под Windows XP , Vista и Windows 7 , и некоторая автоматизация локализации .
    • Минус: чтобы собрать самоадаптирующуюся (адаптивную) сетку, требуется квалифицированный программист, а также затруднена плотная компоновка.
  3. Гибридный подход реализован в GTK+ .
    • Плюс: шрифты можно брать из системы, а не «тащить» свои, а также некоторая автоматизация локализации.
    • Минус: берёт все недостатки от первых двух подходов. Стиль отличается от стиля операционной системы, затруднена плотная компоновка.

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

Условная компиляция

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

Например, браузер Mozilla Firefox имеет разные комплекты значков под разные операционные системы.

Прикладные программы

Большое количество прикладных программ также являются кроссплатформенными. Особенно это качество выражено у программ, изначально разработанных для Unix-подобных операционных систем . Важным условием их переносимости на другие платформы является совместимость платформ с рекомендациями POSIX , а также существование компилятора GCC для платформы, на которую осуществляется перенос.

Операционные системы

Современные операционные системы также часто являются кроссплатформенными. Например, операционные системы с открытым исходным кодом (в частности: NetBSD , Linux , FreeBSD , AROS ) могут работать на нескольких различных аппаратных платформах. Наиболее часто это: x86 , m68k , PowerPC , Alpha , AMD64 , SPARC . (« Эльбрус ОС » есть не что иное как глубоко доработанный для платформы « Эльбрус ». Но существует «Эльбрус ОС» также доступна и для платформ «Эльбрус-SPARC», представляющей собой реализацию платформы SPARC от МЦСТ , и платформы х86.) Первый выпуск 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, после чего поддержка Itanium была свёрнута.) Операционная система NetBSD считается самой наиболее многоплатформенной , — она портирована на большинство ныне существующих платформ.

Среды разработки

Ряд IDE , в том числе Free Pascal, Lazarus , Qt Creator , работают на разных операционных системах: Linux, Windows и других .

Эмуляция

Если программа не предназначена для исполнения (запуска) на определённой платформе, но для этой платформы существует эмулятор платформы, базовой для данной программы, то программа может быть исполнена в среде эмулятора.

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

Примечания

  1. (англ.) . netbsd.org . Дата обращения: 31 октября 2021. 22 декабря 2021 года.
  2. . Дата обращения: 8 декабря 2013. Архивировано из 26 ноября 2013 года.

Ссылки

  • - Создание кроссплатформенных приложений с помощью инструментов Visual Studio для Apache Cordova — MSDN — Microsoft
  • - Кроссплатформенная разработка | AppTractor
Источник —

Same as Кроссплатформенность