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

Поделись знанием:
Перейти к: навигация, поиск
К:Википедия:Страницы на КПМ (тип: не указан) К:Википедия:Статьи без источников (тип: не указан)

Кроссплатформенное (межплатформенное) программное обеспечение — программное обеспечение, работающее более чем на одной аппаратной платформе и/или операционной системе. Типичным примером является программное обеспечение, предназначенное для работы в операционных системах 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#, можно запускать под разными ОС без предварительной перекомпиляции.

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

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

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

Эмуляция

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

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

См. также

Напишите отзыв о статье "Кроссплатформенное программное обеспечение"

Примечания

  1. [netbsd.org/about/portability.html Portability and supported hardware platforms]
  2. [rusio.net/pascal/free.php IDE Lazarus и Free Pascal]

Ссылки

  • [www.crossplatform.ru/ Всё о кроссплатформенном программировании]
  • [codedocs.ru/xamarin/sozdanie-kross-platformennyh-prilozhenij.html Создание кроссплатформенных приложений] - Рекомендации по разработке мобильных приложений в Xamarin.

Отрывок, характеризующий Кроссплатформенное программное обеспечение

Провидение заставляло всех этих людей, стремясь к достижению своих личных целей, содействовать исполнению одного огромного результата, о котором ни один человек (ни Наполеон, ни Александр, ни еще менее кто либо из участников войны) не имел ни малейшего чаяния.
Теперь нам ясно, что было в 1812 м году причиной погибели французской армии. Никто не станет спорить, что причиной погибели французских войск Наполеона было, с одной стороны, вступление их в позднее время без приготовления к зимнему походу в глубь России, а с другой стороны, характер, который приняла война от сожжения русских городов и возбуждения ненависти к врагу в русском народе. Но тогда не только никто не предвидел того (что теперь кажется очевидным), что только этим путем могла погибнуть восьмисоттысячная, лучшая в мире и предводимая лучшим полководцем армия в столкновении с вдвое слабейшей, неопытной и предводимой неопытными полководцами – русской армией; не только никто не предвидел этого, но все усилия со стороны русских были постоянно устремляемы на то, чтобы помешать тому, что одно могло спасти Россию, и со стороны французов, несмотря на опытность и так называемый военный гений Наполеона, были устремлены все усилия к тому, чтобы растянуться в конце лета до Москвы, то есть сделать то самое, что должно было погубить их.
В исторических сочинениях о 1812 м годе авторы французы очень любят говорить о том, как Наполеон чувствовал опасность растяжения своей линии, как он искал сражения, как маршалы его советовали ему остановиться в Смоленске, и приводить другие подобные доводы, доказывающие, что тогда уже будто понята была опасность кампании; а авторы русские еще более любят говорить о том, как с начала кампании существовал план скифской войны заманивания Наполеона в глубь России, и приписывают этот план кто Пфулю, кто какому то французу, кто Толю, кто самому императору Александру, указывая на записки, проекты и письма, в которых действительно находятся намеки на этот образ действий. Но все эти намеки на предвидение того, что случилось, как со стороны французов так и со стороны русских выставляются теперь только потому, что событие оправдало их. Ежели бы событие не совершилось, то намеки эти были бы забыты, как забыты теперь тысячи и миллионы противоположных намеков и предположений, бывших в ходу тогда, но оказавшихся несправедливыми и потому забытых. Об исходе каждого совершающегося события всегда бывает так много предположений, что, чем бы оно ни кончилось, всегда найдутся люди, которые скажут: «Я тогда еще сказал, что это так будет», забывая совсем, что в числе бесчисленных предположений были делаемы и совершенно противоположные.
Предположения о сознании Наполеоном опасности растяжения линии и со стороны русских – о завлечении неприятеля в глубь России – принадлежат, очевидно, к этому разряду, и историки только с большой натяжкой могут приписывать такие соображения Наполеону и его маршалам и такие планы русским военачальникам. Все факты совершенно противоречат таким предположениям. Не только во все время войны со стороны русских не было желания заманить французов в глубь России, но все было делаемо для того, чтобы остановить их с первого вступления их в Россию, и не только Наполеон не боялся растяжения своей линии, но он радовался, как торжеству, каждому своему шагу вперед и очень лениво, не так, как в прежние свои кампании, искал сражения.
При самом начале кампании армии наши разрезаны, и единственная цель, к которой мы стремимся, состоит в том, чтобы соединить их, хотя для того, чтобы отступать и завлекать неприятеля в глубь страны, в соединении армий не представляется выгод. Император находится при армии для воодушевления ее в отстаивании каждого шага русской земли, а не для отступления. Устроивается громадный Дрисский лагерь по плану Пфуля и не предполагается отступать далее. Государь делает упреки главнокомандующим за каждый шаг отступления. Не только сожжение Москвы, но допущение неприятеля до Смоленска не может даже представиться воображению императора, и когда армии соединяются, то государь негодует за то, что Смоленск взят и сожжен и не дано пред стенами его генерального сражения.
Так думает государь, но русские военачальники и все русские люди еще более негодуют при мысли о том, что наши отступают в глубь страны.
Наполеон, разрезав армии, движется в глубь страны и упускает несколько случаев сражения. В августе месяце он в Смоленске и думает только о том, как бы ему идти дальше, хотя, как мы теперь видим, это движение вперед для него очевидно пагубно.
Факты говорят очевидно, что ни Наполеон не предвидел опасности в движении на Москву, ни Александр и русские военачальники не думали тогда о заманивании Наполеона, а думали о противном. Завлечение Наполеона в глубь страны произошло не по чьему нибудь плану (никто и не верил в возможность этого), а произошло от сложнейшей игры интриг, целей, желаний людей – участников войны, не угадывавших того, что должно быть, и того, что было единственным спасением России. Все происходит нечаянно. Армии разрезаны при начале кампании. Мы стараемся соединить их с очевидной целью дать сражение и удержать наступление неприятеля, но и этом стремлении к соединению, избегая сражений с сильнейшим неприятелем и невольно отходя под острым углом, мы заводим французов до Смоленска. Но мало того сказать, что мы отходим под острым углом потому, что французы двигаются между обеими армиями, – угол этот делается еще острее, и мы еще дальше уходим потому, что Барклай де Толли, непопулярный немец, ненавистен Багратиону (имеющему стать под его начальство), и Багратион, командуя 2 й армией, старается как можно дольше не присоединяться к Барклаю, чтобы не стать под его команду. Багратион долго не присоединяется (хотя в этом главная цель всех начальствующих лиц) потому, что ему кажется, что он на этом марше ставит в опасность свою армию и что выгоднее всего для него отступить левее и южнее, беспокоя с фланга и тыла неприятеля и комплектуя свою армию в Украине. А кажется, и придумано это им потому, что ему не хочется подчиняться ненавистному и младшему чином немцу Барклаю.