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