Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Операционные системы реального времени и технологии разработки кроссплатформенного программного обеспечения. Часть 2

Покупка
Основная коллекция
Артикул: 736679.01.99
Доступ онлайн
218 ₽
В корзину
Данное учебное пособие продолжает серию пособий для студентов дневной и заочной форм обучения, обучающихся по направлениям 09.03.01, 09.04.01 - Информатика и вычислительная техника. Также может быть полезно студентам и магистрантам, обучающимся по смежным специальностям. Пособие представляет собой описание технологий разработки нативного и кроссплатформенного программного обеспечения. Разработано на кафедре вычислительной техники ИКТИБ ЮФУ.
Беспалов, Д. А. Операционные системы реального времени и технологии разработки кроссплатформенного программного обеспечения. Часть 2 : учебное пособие / Д. А. Беспалов, С. М. Гушанский, Н. М. Коробейникова ; Южный федеральный университет. - Ростов-на-Дону ; Таганрог : Издательство Южного федерального университета, 2019. - 168 с. - ISBN 978-5-9275-3368-8. - Текст : электронный. - URL: https://znanium.com/catalog/product/1088205 (дата обращения: 29.03.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ 

РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное автономное 

образовательное учреждение высшего образования

«ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»

Инженерно-технологическая академия

Д. А. БЕСПАЛОВ

С. М. ГУШАНСКИЙ

Н. М. КОРОБЕЙНИКОВА

ОПЕРАЦИОННЫЕ СИСТЕМЫ РЕАЛЬНОГО 
ВРЕМЕНИ И ТЕХНОЛОГИИ РАЗРАБОТКИ

КРОССПЛАТФОРМЕННОГО ПРОГРАММНОГО

ОБЕСПЕЧЕНИЯ

ЧАСТЬ 2

Учебное пособие

Ростов-на-Дону – Таганрог

Издательство Южного федерального университета

2019

 

 

УДК 004.451(075.8)
ББК  32.973.26-018.1я73

Б534

Печатается по решению кафедры вычислительной техники Института

компьютерных технологий и информационной безопасности

Южного федерального университета
(протокол № 11 от 27 марта 2019 г.)

Рецензенты:

профессор кафедры высшей математики Инженерно-технологической

академии Южного федерального университета,

доктор технических наук, профессор Г. В. Куповых

профессор кафедры естествознания и безопасности жизнедеятельности

Таганрогского института им. А. П. Чехова (филиал) ФГБОУ ВО 

«РГЭУ (РИНХ)», доктор технических наук, профессор В. И. Божич

Беспалов, Д. А.

Б534  
Операционные системы реального времени и технологии разра
ботки кроссплатформенного программного обеспечения. Часть 2 : 
учебное пособие / Д. А. Беспалов, С. М. Гушанский, Н. М. Коробейникова ; Южный федеральный университет. – Ростов-на-Дону ; Таганрог : Издательство Южного федерального университета, 2019. – 168 с.

ISBN 978-5-9275-3366-4
Часть 2. – 168 с.
ISBN 978-5-9275-3368-8 (Ч. 2)
Данное учебное пособие продолжает серию пособий для студентов 

дневной и заочной форм обучения, обучающихся по направлениям 09.03.01, 
09.04.01 – Информатика и вычислительная техника. Также может быть полезно студентам и магистрантам, обучающимся по смежным специальностям. 
Пособие представляет собой описание технологий разработки нативного и 
кроссплатформенного программного обеспечения.

Разработано на кафедре вычислительной техники ИКТИБ ЮФУ.

УДК 004.451(075.8)

ББК 32.973.26-018.1я73

ISBN 978-5-9275-3366-4
ISBN 978-5-9275-3368-8 (Ч. 2)

 Южный федеральный университет, 2019
 Беспалов Д. А., Гушанский С. М., 

Коробейникова Н. М., 2019

 Оформление. Макет. Издательство 

Южного федерального университета, 2019

 

 

ОГЛАВЛЕНИЕ

ВВЕДЕНИЕ ……………………………………………………………...
5

1. КРОССПЛАТФОРМЕННАЯ И НАТИВНАЯ РАЗРАБОТКА …..
8

1.1. Нативные приложения ……………………………………………
11

1.2. Кроссплатформенные приложения ……………………………...
11

2. КОМПИЛЯЦИЯ И КРОССКОМПИЛЯЦИЯ ………………………
15

3. ИНТЕРПРЕТАТОРЫ И ТРАНСЛЯТОРЫ …………………………
22

4. ТЕХНОЛОГИИ ВИРТУАЛИЗАЦИИ ……………………………….
26

4.1. Виртуальные машины ……………………………………………
26

4.2. Абстракция и виртуализация …………………………………….
30

4.3. Изоляция приложений и “песочницы” ……………………….....
32

4.4. Системы виртуализации и управления конфигурациями типа 
Docker ………………………………………………………………….
33

5. ПОПУЛЯРНЫЕ
ИНСТРУМЕНТЫ
НАТИВНОЙ 
И
КРОС
СПЛАТФОРМЕННОЙ РАЗРАБОТКИ ………………………………..
46

5.1. Инструменты нативной разработки …………………………......
46

5.2. Инструменты кроссплатформенной разработки …………….....
53

5.2.1. Инструментарий разработки С++ …………………………….
53

5.2.2. Object Pascal и RAD Studio …………………………………….....
60

5.2.3. Технология Java и Kotlin …………………………………………..
68

5.2.4. Скриптовые языки программирования ………………………..
77

5.2.5. Технологии C#, .NET Core и Xamarin ……………………………
83

5.3. Гибридные технологии ………………………………………….. 100

5.3.1. Прогрессивные веб-технологии в кроссплатформенном
программировании ………………………………………………………... 100
5.3.2. Технологии на базе JavaScript …………………………………… 109
5.3.3. Серверный JavaScript ……………………………………………… 120
5.3.4. NativeScript ………………………………………………………...... 132
5.3.5. Фреймворки JavaScript в кроссплатформенной разра-ботке: Angular и React ………………………………………………………… 135

 

Оглавление

4

5.3.6. Новые технологии разработки кроссплатформенного ПО
на примере Dart и Flutter и их сравнение с конкурентами ……….. 147

ЗАКЛЮЧЕНИЕ …………………………………………………………. 165

СПИСОК ЛИТЕРАТУРЫ ……………………………………………… 166

 

ВВЕДЕНИЕ

Кроссплатформенное программное обеспечение (КПО) – это про
граммное обеспечение (ПО), работающее более чем на одной аппаратной 
платформе и/или операционной системе. Типичным примером для объяснения кроссплатформенности является программное обеспечение, предназначенное для работы в операционных системах MacOS, Linux и Windows 
одновременно, например офисные пакеты LibreOffice, редакторы для программистов нового поколения Visual Studio Code, Atom, Sublime Text, среда 
разработки Eclipse, Intellij Idea и так далее.

Кроссплатформенными можно назвать программы, написанные на 

таких современных высокоуровневых языках программирования, как C, 
С++, Free Pascal, Java, JavaScript, Python. Первые три языка обеспечивают 
кроссплатформенность на уровне компиляции, т.е. для этих языков есть 
компиляторы под различные платформы, а последние три – на уровне 
“движка”, т.е. среды исполнения или виртуальной машины. Это позволяет 
не переписывать основные модули программы с одной платформы на другую, а изменять только особые, зависимые именно от платформы части.

Не менее важны для кроссплатформенности стандартизованные 

библиотеки времени выполнения, так называемые Runtime Libraries. Основным для них стандартом стала библиотека языка Си (см. стандарт и рекомендации POSIX) и ее производные. Из крупных кроссплатформенных 
библиотек можно привести в пример следующие: Qt, GTK+, FLTK, STL, 
Boost, OpenGL, SDL, OpenAL, OpenCL.

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

Все ее версии, начиная с ХР и заканчивая текущей версией 10, в 

сумме работают на 91,5 % компьютеров в мире. Учитывая, что население 
Земли уже превысило 7,5 млрд человек, ориентировочно можно представить масштабы ее распространения.

Тем не менее остается целых 8,5 %, приходящихся на долю других 

операционных систем. Эта доля распределяется между двумя менее успешными в этом плане игроками на рынке операционных систем. Mac OS

 

Введение

6

(на втором месте) занимает 6,2 %, а все версии Linux вместе на персональных ЭВМ набирают 2,3 %.

Совершенно другая ситуация на рынке серверного программного 

обеспечения и в наукоемких областях. Здесь Linux занимает лидирующие позиции и занимает более 70 % всех устанавливаемых операционных систем.

На рынке мобильных ОС также лидирующее положение занимает 

основанная на Linux ОС Android, имеющая массовую долю в 71,5 %. Следом за ним, со значительным разрывом, держится iOS (19,7 %). Около 1,2 % 
занимает постоянно теряющая позиции Windows Phone и еще 7,6 % занимают другие операционные системы или старые, или просто непопулярные. Что примечательно, каждая такая система старается использовать пакеты только из своего магазина приложений, конфликтуя с остальными.

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

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

Даже беглого взгляда на рынок операционных систем достаточно, 

чтобы понять востребованность такого продукта, как кроссплатформенное 
программное обеспечение.

Как и любое ПО, кроссплатформенное программное обеспечение 

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

Наиболее крупными областями, в которых успешно развивается 

кроссплатформенное программное обеспечение, являются:

• социально ориентированные сетевые проекты;
• мессенджеры;
• инструментарий интернет-серфинга;

Введение

7

• новостные агрегаторы;
• офисные пакеты.
Времена, когда единственной используемой обычными пользовате
лями платформой являлся Windows, безвозвратно ушли. В настоящее 
время все большая часть пользователей применяют иные операционные системы, в число которых входит Linux и ее разные версии.

В данной работе мы подробно рассмотрим, что представляет собой 

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

Далее проведем сравнение кроссплатформенной и нативной разра
ботки.

 

1. КРОССПЛАТФОРМЕННАЯ
И НАТИВНАЯ РАЗРАБОТКА

Кроссплатформенность в основном сейчас достигается несколькими 

путями:

• использование кроссплатформенных языков программирования;
• разработка кроссплатформенного интерфейса пользователя;
• ведение разработки в специальных кроссплатформенных средах;
• адаптация программного кода для запуска на различных плат
формах;

• адаптация дизайна и следование общим рекомендациям.
Рассмотрим эти пути более подробно.

Использование кроссплатформенных языков программирования.

Здесь имеется в виду то, что часто применяются изначально крос
сплатформенные языки типа C, С++, Free Pascal, Java, JavaScript, Python и 
другие. Они имеют специальные механизмы для адаптации кода под другую платформу и средства непосредственного запуска на различных платформах без внесения изменений в исходных кодах. Это очень удобно, поскольку требует при необходимости переписывания лишь его фрагментов, 
которые напрямую зависят от платформы размещения.

Создание кроссплатформенного интерфейса пользователя.

При работе с устройствами на разных платформах стандартные эле
менты интерфейса могут искажаться, поэтому используется либо стандартная схема расстановки элементов управления, либо самоадаптирующийся 
интерфейс. Многие библиотеки со временем переносятся (портируется) на 
другие платформы. Так было, например, изначально с библиотеками под 
ОС Windows типа WinForms, а теперь проект Mono успешно реализует возможность программирования с WinForms даже под Linux [24].

Ведение разработки в специальных кроссплатформенных средах.

Примерами могут быть известные инструментарии типа Java Virtual 

Machine, платформы .NET, среды NodeJS, где не требуется дополнительная 
перекомпиляция (адаптация) элементов сайта под новые требования, а за 
само выполнение программ и отрисовку интерфейсов ответственна среда 
выполнения и виртуальная машина.

 

1. Кроссплатформенная и нативная разработка

9

Адаптация кода для запуска на различных платформах.

Если существует нескольких версий одного кода, адаптированных 

под разные платформы, время на обработку сократится. Можно менять 
только необходимые элементы кода, причем делать это поблочно. Например, браузер Mozilla Firefox имеет разные наборы иконок под разные ОС.

Адаптация дизайна и следование общим рекомендациям.

Это автоматическая адаптация сайта под устройства с разным разме
ром экрана. С таким подходом не нужно разрабатывать отдельно мобильную версию или специальный комплект иконок. Более того, существуют 
стандартизированные библиотеки, или, как это сейчас принято говорить, 
компоненты, реализующие стандарты интерфейса по каким-либо рекомендациям. Например, одним из самых популярных сейчас является Material 
Design от компании Google (https://material.io/design/).

Таким образом, кроссплатформенное программное обеспечение 

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

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

К ним принадлежат следующие:
• ActionScript;
• Perl;
• Ruby;
• Python;
• PHP.
Также стоит отметить, что некоторые похожие свойства имеет JVM

и .NET. Таким образом, программы, которые написаны на Java или C#,

1. Кроссплатформенная и нативная разработка

10

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

Не имеет значения, каким образом достигается результат, поскольку 

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

В создаваемом кроссплатформенном программном обеспечении 

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

Таким образом, появляется вопрос о том, какой стиль выбрать для 

программы. Прежде чем искать на него ответ, необходимо знать, что существует несколько вариантов:

• общий стиль, используемый во всех операционных системах 

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

• самоадаптирующийся интерфейс, подстраивающийся под разные 

требования в автоматическом режиме под подходящие настройки;

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

В последнем случае стили отличаются, поэтому достаточно сложно 

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

1.2. Кроссплатформенные приложения

11

1.1. Нативные приложения

Нативные приложения отличаются от кроссплатформенных. Если 

разработчики в процессе написания приложения пользуются принятым для 
конкретной платформы языком программирования, будь то Objective-C и 
Swift для iOS или Java или Kotlin для Android, такое приложение будет 
называться нативным (от англ. native – родной, естественный) [1].

Преимущества нативных приложений:
• скорость работы и отклика интерфейса. Приложение реагирует на 

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

• понятный и простой доступ к функциям и датчикам устройства. 

Для разработчика не представляет проблемы работа с геолокацией, пушуведомлениями, съёмкой фото и видео через камеру, звуком, акселерометром и другими датчиками;

• возможность углублённой работы с функциями смартфона. Такие 

вещи, как анимации, создание сложных интерфейсов и работа нейросетей 
прямо на устройствах реализуются не просто, но прогнозируемо;

• родной для платформы интерфейс. Нативные приложения обычно 

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

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

С ростом рынка мобильных приложений, услуги такого разработ
чика стали не просто дороги, а очень дороги.

1.2. Кроссплатформенные приложения

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

Доступ онлайн
218 ₽
В корзину