Операционные системы реального времени и технологии разработки кроссплатформенного программного обеспечения. Часть 2
Покупка
Основная коллекция
Издательство:
Южный федеральный университет
Год издания: 2019
Кол-во страниц: 168
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-9275-3368-8
Артикул: 736679.01.99
Данное учебное пособие продолжает серию пособий для студентов дневной и заочной форм обучения, обучающихся по направлениям 09.03.01, 09.04.01 - Информатика и вычислительная техника. Также может быть полезно студентам и магистрантам, обучающимся по смежным специальностям. Пособие представляет собой описание технологий разработки нативного и кроссплатформенного программного обеспечения. Разработано на кафедре вычислительной техники ИКТИБ ЮФУ.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- ВО - Магистратура
- 09.04.01: Информатика и вычислительная техника
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное автономное образовательное учреждение высшего образования «ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ» Инженерно-технологическая академия Д. А. БЕСПАЛОВ С. М. ГУШАНСКИЙ Н. М. КОРОБЕЙНИКОВА ОПЕРАЦИОННЫЕ СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ И ТЕХНОЛОГИИ РАЗРАБОТКИ КРОССПЛАТФОРМЕННОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ЧАСТЬ 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#,