Table Of ContentCopyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ
РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное автономное
образовательное учреждение высшего образования
«ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»
Инженерно-технологическая академия
Д. А. БЕСПАЛОВ
С. М. ГУШАНСКИЙ
Н. М. КОРОБЕЙНИКОВА
ОПЕРАЦИОННЫЕ СИСТЕМЫ РЕАЛЬНОГО
ВРЕМЕНИ И ТЕХНОЛОГИИ РАЗРАБОТКИ
КРОССПЛАТФОРМЕННОГО ПРОГРАММНОГО
ОБЕСПЕЧЕНИЯ
Учебное пособие
в трех частях
Часть 3
Ростов-на-Дону – Таганрог
Издательство Южного федерального университета
2021
1
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
УДК 004.451(075.8)
ББК 32.973.26-018.1я73
Б534
Печатается по решению кафедры вычислительной техники
Института компьютерных технологий и информационной безопасности
Южного федерального университета
(протокол № 2 от 25 сентября 2020 г.)
Рецензенты:
профессор кафедры высшей математики Инженерно-технологической
академии Южного федерального университета,
доктор технических наук, профессор Г. В. Куповых
профессор кафедры естествознания и безопасности жизнедеятельности
Таганрогского института им. А. П. Чехова (филиал) ФГБОУ ВО «РГЭУ (РИНХ)»,
доктор технических наук, профессор В. И. Божич
Беспалов, Д. А.
Б534 Операционные системы реального времени и технологии разработки
кроссплатформенного программного обеспечения : учебное пособие : в 3 ч. /
Д. А. Беспалов, С. М. Гушанский, Н. М. Коробейникова ; Южный федераль-
ный университет. – Ростов-на-Дону ; Таганрог : Издательство Южного феде-
рального университета, 2021.
ISBN 978-5-9275-3366-4
Часть 3. – 214 с.
ISBN 978-5-9275-3628-3 (Ч. 3)
Данное учебное пособие продолжает серию пособий для студентов дневной и за-
очной форм обучения, обучающихся по направлениям 09.03.01, 09.04.01 – Информа-
тика и вычислительная техника. Также может быть полезно студентам и магистрантам,
обучающимся по смежным специальностям. Данное учебное пособие раскрывает прин-
ципы разработки кроссплатформенных приложений на языке высокого уровня с приме-
нением современных инструментов и библиотек, а также показывает в деталях все су-
ществующие подходы к созданию стандартных веб-приложений, реактивных веб-при-
ложений, серверных приложений, а также настольного и мобильного программного
обеспечения с применением таких инструментов, как JavaScript, HTML CSS, ReactJS,
NodeJS, ElectronJS и React Native.
Учебное пособие разработано на кафедре вычислительной техники ИКТИБ ЮФУ.
УДК 004.451(075.8)
ББК 32.973.26-018.1я73
ISBN 978-5-9275-3628-3 (Ч. 3)
ISBN 978-5-9275-3366-4
© Южный федеральный университет, 2021
© Беспалов Д. А., Гушанский С. М.,
Коробейникова Н. М., 2021
© Оформление. Макет. Издательство
Южного федерального университета, 2021
2
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Содержание
СОДЕРЖАНИЕ
ВВЕДЕНИЕ …………………………………………………………… 6
1. ВАЖНОСТЬ РАЗРАБОТКИ КРОССПЛАТФОРМЕННЫХ
РЕШЕНИЙ …………………………………………………………….. 7
2. ЖИЗНЕННЫЙ ЦИКЛ КРОССПЛАТФОРМЕННЫХ
ПРИЛОЖЕНИЙ ………………………………………………………. 12
2.1. Введение ………………………………………………………... 12
2.2. Основные этапы жизненного цикла кроссплатформенного
приложения …………………………………………………………. 12
2.3. Зарождение проекта …………………………………………… 15
2.4. Проектирование, макетирование приложения ……………….. 16
2.5. Разработка ……………………………………………………… 22
2.6. Стабилизация …………………………………………………... 22
2.7. Развертывание и распространение ……………………………. 23
Выводы ……………………………………………………………… 24
3. ЯЗЫК JAVASCRIPT ………………………………………………. 25
3.1. Введение ………………………………………………………... 25
3.2. Особенности языка …………………………………………….. 25
3.3. Основные типы данных и объекты языка ……………………. 30
3.4. Операции с данными …………………………………………… 39
3.5. Управляющие конструкции …………………………………… 42
3.6. Организация функций и их вызовов ………………………….. 47
3.7. Объекты JavaScript ……………………………………………... 56
3.8. Исполнение и отладка программного кода …………………… 73
4. ИНСТРУМЕНТАЛЬНЫЕ СРЕДСТВА РАЗРАБОТКИ ………... 78
5. РАЗРАБОТКА КЛАССИЧЕСКИХ ВЕБ-ПРИЛОЖЕНИЙ …….. 87
5.1. Введение ………………………………………………………... 87
5.2. Подготовка приложения ……………………………………….. 87
5.3. Процесс разработки ……………………………………………. 87
Заключение ………………………………………………………….. 94
6. РАЗРАБОТКА СЕРВЕРНОГО РЕШЕНИЯ ……………………... 95
3
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Содержание
6.1. Введение ………………………………………………………... 95
6.2. Подготовка приложения ……………………………………….. 96
6.3. Установка базы данных ………………………………………... 99
6.4. Процесс разработки ……………………………………………. 102
Заключение ………………………………………………………….. 118
7. РАЗРАБОТКА ПРИЛОЖЕНИЙ ДЛЯ ПЕРСОНАЛЬНЫХ
ЭВМ …………………………………………………………………… 119
7.1. Введение ………………………………………………………... 119
7.2. Подготовка приложения ……………………………………….. 119
7.3. Процесс разработки ……………………………………………. 121
Заключение ………………………………………………………….. 124
8. РАЗРАБОТКА РЕАКТИВНОГО ВЕБ-ПРИЛОЖЕНИЯ ……….. 125
8.1. Введение ………………………………………………………... 125
8.2. Подготовка приложения ……………………………………….. 126
8.3. Процесс разработки ……………………………………………. 129
Заключение ………………………………………………………….. 155
9. РАЗРАБОТКА МОБИЛЬНОГО ПРИЛОЖЕНИЯ ……………… 156
9.1. Введение ………………………………………………………... 156
9.2. Подготовка приложения ……………………………………….. 156
9.3. Процесс разработки ……………………………………………. 167
Заключение ………………………………………………………….. 185
ЗАКЛЮЧЕНИЕ ……………………………………………………….. 186
СПИСОК ЛИТЕРАТУРЫ …………………………………………… 187
ПРИЛОЖЕНИЯ ………………………………………………………. 189
Приложение А ………………………………………………………. 189
Файл index.html …………………………………………………… 189
Файл style.css ……………………………………………………… 191
Приложение Б ………………………………………………………. 195
Файл package.json ………………………………………………… 195
Файл server.js ……………………………………………………… 195
Файл ./configuration/index.js ……………………………………… 197
Файл ./routes/todo.route.js ………………………………………… 197
4
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Содержание
Файл ./controllers/todo.controller.js ………………………………. 198
Файл ./services/todo.service.js …………………………………….. 199
Файл ./schemas/todo.schema.js …………………………………… 200
Приложение В ………………………………………………………. 202
Файл App.js ……………………………………………………….. 202
Файл ./views/MainView.jsx ……………………………………….. 202
Файл ./utils/api.js ………………………………………………….. 203
Файл ./configuration/index.js ……………………………………… 203
Файл ./components/TodoLost.jsx …………………………………. 203
Файл ./components/TodoElement.jsx ……………………………... 204
Файл ./components/TextInput.jsx …………………………………. 205
Приложение Г ………………………………………………………. 208
Файл ./App.js ……………………………………………………… 208
Файл ./components/TodoInput.js ………………………………….. 209
Файл ./components/TodoList.js …………………………………… 211
5
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Содержание
ВВЕДЕНИЕ
В современном мире для разработки программного обеспечения су-
ществует множество подходов и технологий. Среди них особое место зани-
мают способы и инструменты разработки кроссплатформенных приложе-
ний, которые позволяют единой кодовой базой покрывать сразу несколько
платформ и операционных систем.
Кроссплатформенные приложения используются в самых разных
сферах деятельности человека, но особое внимание они привлекают у пред-
ставителей бизнес-сообщества. Это обусловлено особым экономическим
эффектом от разработки и внедрения такого рода программ. Неоспоримым
фактом является то, что минимальное время “выхода” приложения форми-
рует конкурентное преимущество для его создателей, а отсутствие необхо-
димости расширять штат сотрудников специалистами по разработке про-
граммного обеспечения для каждой конкретной платформы, экономит
вкладываемые средства и делает процесс создания нового решения более
стандартизированным.
Данное учебное пособие раскрывает принципы разработки крос-
сплатформенных приложений на языке высокого уровня с применением со-
временных инструментов и библиотек, а также показывает в деталях все
существующие подходы к созданию стандартных веб-приложений, реак-
тивных веб-приложений, серверных приложений, а также настольного и
мобильного программного обеспечения с применением таких инструмен-
тов, как JavaScript, HTML CSS, ReactJS, NodeJS, ElectronJS и React Native.
В каждом разделе пособия показан процесс подготовки решения,
установка необходимых инструментов и библиотек, настройка проекта,
ход решения задачи и конечный результат.
Данное учебное пособие является необходимым при изучении кур-
сов, связанных с разработкой современных приложений, а также может
быть испоьзовано для самостоятельной работы и изучения этого направле-
ния, так как содержит все необходимые материалы и рекомендации.
6
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
1. Важность разработки кроссплатформенных решений
1. ВАЖНОСТЬ РАЗРАБОТКИ
КРОССПЛАТФОРМЕННЫХ РЕШЕНИЙ
В основе разработки кроссплатформенных приложений лежит один
принцип: «разрабатываешь один раз, запускаешь везде». В современном
мире программных продуктов, стоимость услуг разработчиков и само
время разработки конечного решения постоянно растет. В самом распро-
страненном варианте, компании, желающей внедрить программное реше-
ние на всех доступных платформах, приходится держать штат из дизайне-
ров интерфейсов, разработчиков приложений для настольных систем, раз-
работчиков веб-приложений и серверов, разработчиков для платформ An-
droid и iOS. Это безумно дорого и долго. Среднее время выхода приложе-
ния с учетом всех особенностей платформ и созданием нативных решений
исчесляется многими месяцами. Современный темп жизни накладывает
ограничения: кто быстрее апробировал новую идею и быстрее внедрил про-
дукт на рынок – тот и выиграл. Поэтому многие компании отдают предпо-
чтение именно кроссплатформенной разработке, как минимум на этапе со-
здания прототипа приложения и его апробации на рынке в реальных усло-
виях. На это уходят основные инвестиции, а уже после получения дохода
от самого приложения – нанимают соответствующий персонал разработчи-
ков и то в том случае, когда кроссплатформенное решение не удовлетво-
ряет жестким условиям и ограничениям (например, по скорости, надежно-
сти или особенностям интерфейса).
Кроссплатформенные же приложения пишутся сразу для нескольких
платформ на одном языке, отличном от нативного. Как такой код может
работать на разных устройствах, но тут тоже есть два подхода.
Первый заключается в том, что на этапе подготовки приложения к
публикации он превращается в нативный для определённой платформы с
помощью транспилера. Фактически один кроссплатформенный язык про-
граммирования “переводится” на другой.
Второй – в том, что к получившемуся коду добавляется определён-
ная обёртка, которая, работая уже на устройстве, на лету транслирует вы-
зовы из неродного кода к родным функциям системы.
Предполагается, что большая часть такого кода может переноситься
между платформами. Это, например, могут быть алгоритмы для обработки
7
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
1. Важность разработки кроссплатформенных решений
заказов пользователей в интернет-магазине, алгоритмы для обработки дан-
ных, блоки интерфейса, процедуры для выполнения сетевых запросов и так
далее. Эти части практически не зависят от того, на какой платформе код
запускается.
Например, меню типа “гамбургер” одинаково используется на всех
платформах (веб и мобильные), так что внесение изменений в структуру
меню отразится сразу на всех вариантах реализации.
В связи с этим можно четко выделить преимущества кроссплатфор-
менного подхода к разработке современных приложений:
• относительно низкая стоимость разработки;
• относительно высокая скорость разработки;
• возможность задействовать одних и тех же разработчиков для всех
платформ;
• возможность задействовать уже существующий внутренний ре-
сурс компании для подключения новых платформ.
Конечно, есть некоторые недостатки:
• некоторые элементы интерфейса сложно создать с полностью на-
тивным видом – у каждой системы свои требования к дизайну элементов
интерфейса и это следует учитывать;
• некоторые аппаратные устройства работают по-разному на различ-
ных платформах;
• сильная зависимость от фреймворков, так как именно они обра-
зуют связующее звено между кроссплатформенной логикой и слоем плат-
формы. Кроссплатформенная среда лишь транслирует запросы к систем-
ным вызовам и интерфейсам в понимаемый ею, системой, формат, и по-
тому на этом этапе возможны как сложности с пониманием, так и возник-
новение ошибок внутри самого фреймворка;
• средняя или низкая скорость работы. Нативная программа будет
практически всегда работать быстрее, чем кроссплатформенная. Иногда
эта разница не видна глазу, а иногда бросается в глаза. Мощность совре-
менных устройств нивелирует этот эффект, но он все же есть.
В этом случае единственным верным вариантом является следова-
ние принципу равновесия: скорость разработки против стоимости, ско-
рость работы против универсальности, переносимость бизнес-логики про-
тив нативного кода.
8
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
1. Важность разработки кроссплатформенных решений
Кроссплатформенная разработка тоже имеет свою историю [3].
Сначала были Cordova + HTML5. Это одно из самых популярных
направлений в кроссплатформенном программировании и на текущий мо-
мент. Его так же часто по-народному называют PhoneGap. Фактически со-
здаётся мобильный сайт, который “оборачивается” небольшим платфор-
менным кодом, транслирующим вызовы от системы к приложению и об-
ратно. Все недостатки и достоинства выражены тут как нигде ярко. Вы мо-
жете использовать веб-разработчиков (HTML, CSS и JavaScript как основ-
ные технологии) и за месяц или даже пару недель сделать первую версию
приложения за относительно небольшие деньги. Да, она будет подторма-
живать в работе, возможно, в ней будет не совсем точная геолокация, но
она будет работать на всех устройствах и позволит вам, как минимум, про-
тестировать спрос со стороны клиентов на мобильных устройствах.
Теперь, как развитие этой технологии появились PWA (Progressive
Web Applications). Это новая технология от компании Google – те же самые
веб-приложения, но за счёт использования определённых технологий
(в первую очередь это так называемые Service Worker – работающие в фо-
новом режиме JavaScript скрипты и Web App Manifest – описание веб-при-
ложения в понятном для мобильной системы виде). Они без обёртки из
PhoneGap могут работать практически как нативные, устанавливаясь на до-
машний экран смартфона в обход магазина приложений. Могут работать в
офлайне, с пуш-уведомлениями и с нативными функциями: сейчас такие
оболочки имеют практически все современные мегапроекты: ВКонтакте,
Facebook и так далее. В основном PWA распространены на оерационной
системе Android, так как компания Apple жестко против возможности рас-
пространения приложений вне их собственного магазина AppStore.
Учитывая все недостатки HTML5-решений, многие компании со-
здали инструменты, которые позволяют писать код на одном, не нативном,
языке, а он потом транслируется в нативный. Так решаются сразу две про-
блемы одновременно: кодовая база получается одна, а приложения получа-
ются максимально близки к нативному.
Здесь речь идет о технологиях, описанных во второй части данного
учебного пособия: Xamarin, React Native, Ionic и Flutter.
Напомним, что Xamarin – это платформа компании Microsoft. Для
разработки используется стандартный (для Enterprise-разработки) язык
9