Кросс-платформенное программное обеспечение

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 20:16, 23 ноября 2016.

Кросс-платформенное программное обеспечение — программное обеспечение, работающее более чем на одной аппаратной платформе и/или операционной системе. Типичным примером является программное обеспечение, предназначенное для работы в операционных системах Linux и Microsoft Windows одновременно.[1]

Как добиваются кроссплатформенности

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

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

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

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

Ещё на заре ПК компания IBM сделала свой персональный компьютер совместимым с CP/M. Это позволило запускать на нём уже имеющиеся программы.

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

Среды исполнения ActionScript Virtual Machine, JVM (Java Virtual Machine) и Visual Basic .NET также кроссплатформенны, однако на их вход подаётся не исходный текст, а промежуточный код. Поэтому программы, написанные на ActionScript, Java и C Sharp, можно запускать под разными ОС без предварительной перекомпиляции.[2]

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

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

1. Единый стиль, общий для всех ОС. Программы выглядят одинаково под всеми ОС. Так работают интерфейсные библиотеки Java наподобие Swing.

  • Плюс: можно жёстко расставлять элементы управления на манер Delphi (язык программирования); оригинальный стиль.
  • Минус: системе приходится иметь свои экранные шрифты; стиль отличается от стиля ОС.

2. Самоадаптирующийся интерфейс, подстраивающий сетку под реальные размеры элементов управления. Типичные примеры — Qt (программного обеспечения), wxWidgets, XUL.

  • Плюс: стандартный стиль ОС, очень быстрый и «скинующийся» под Windows XP, Microsoft Windows Vista и Microsoft Windows 7; некоторая автоматизация локализации.
  • Минус: чтобы собрать самоадаптирующуюся сетку, требуется квалифицированный программист; затруднена плотная компоновка.

3. Гибридный подход реализован в GTK+.

  • Плюс: шрифты можно брать из системы, а не «тащить» свои; некоторая автоматизация локализации.
  • Минус: берёт все недостатки от первых двух подходов. Стиль отличается от стиля ОС; затруднена плотная компоновка.

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

Языки программирования

Кроссплатформенными можно назвать большинство современных высокоуровневых языков программирования. Например, C (язык программирования), C++ (язык программирования), Free Pascal — кроссплатформенные языки на уровне компиляции, то есть для этих языков есть компиляторы под различные платформы. C Sharp — кроссплатформенные языки на уровне выполнения, то есть их исполняемые файлы можно запускать на различных платформах без предварительной перекомпиляции. Perl, Tcl и кроссплатформенные интерпретируемые языки, их интерпретаторы существуют для многих платформ.[3]

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

Большое количество прикладных программ также являются кроссплатформенными. Особенно это качество выражено у программ, изначально разработанных для UNIX-подобных операционных систем. Важным условием их переносимости на другие платформы является совместимость платформ с рекомендациями POSIX (Portable Operating System Interface for Unix), а также существование компилятора GCC (GNU Compiler Collection) для платформы, на которую осуществляется перенос.

Примеры:

  • BinkD
  • GIMP
  • GoldEd
  • Lotus Notes
  • Mozilla Firefox, Mozilla Thunderbird, MySQL
  • Opera
LirCryptoWrapper sm.png

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

Современные операционные системы также часто являются кроссплатформенными. Например, операционные системы с открытым исходным кодом, например, NetBSD, Linux, FreeBSD, AROS могут работать на нескольких различных платформах, чаще всего это x86, m68k, PowerPC,DEC Alpha, AMD64, SPARC (Scalable Processor ARChitecture).Первый выпуск Microsoft Windows NT 4 вышедший в 1996 году поддерживал четыре платформы (x86,DEC Alpha, MIPS (Microprocessor without Interlocked Pipeline Stages) и PowerPC),в дальнейших версиях Windows NT осталась только поддержка платформы х86.Современная Microsoft Windows может работать как на платформе Intel x86, так и на Intel Itanium (точнее, для Itanium есть только версии Windows 2000/XP, Windows 2003 и Windows 2008, после чего поддержка была свёрнута). Операционная система NetBSD является самой переносимой, она портирована на большинство существующих платформ.[4]

Эмуляция

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

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

Примечания

  1. Кросс-платформенное программное обеспечение [Электронный ресурс] : Материал из Википедии — свободной энциклопедии: — Режим доступа:https://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%BE%D1%81%D1%81%D0%BF%D0%BB%D0%B0%D1%82%D1%84%D0%BE%D1%80%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5
  2. Кросс-платформенное программное обеспечение [Электронный ресурс] : Материал из http://rusio.net/: — Режим доступа: http://rusio.net/pascal/free.php
  3. Кросс-платформенное программное обеспечение [Электронный ресурс] : Материал из http://dic.academic.ru/: — Режим доступа:http://dic.academic.ru/dic.nsf/ruwiki/989950
  4. Кросс-платформенное программное обеспечение [Электронный ресурс] : Материал из http://netbsd.org/: — Режим доступа: http://netbsd.org/about/portability.html
  5. Кросс-платформенное программное обеспечение [Электронный ресурс] : Материал из http://dic.academic.ru/: — Режим доступа: http://dic.academic.ru/dic.nsf/ruwiki/22338