В мире, где цифровая трансформация правит бал, Интернет вещей (IoT) играет ключевую роль в переосмыслении нашего образа жизни и бизнеса. Интернет вещей экономит наше время и повышает производительность мы можем пользоваться устройствами умного дома, работать в едином виртуальном пространстве и взаимодействовать с коллегами, которые далеко от нас.
Согласно исследованию тенденций в области IoT, проведенному по инициативе корпорации Майкрософт, 85% респондентов в настоящее время активно внедряют IoT-технологии и три четверти планируют их внедрение. Примерно 88% респондентов считают, что Интернет вещей критически важен для развития их бизнеса.
Для тех, кто занимается разработкой IoT-технологий, выбрать язык программирования так же сложно, как выбрать тип датчиков или других устройств.
Как правило, жизненный цикл IoT-продукта включает сбор данных и управление ими через обширную сеть датчиков и устройств. Полученные данные обрабатываются и анализируются, после чего на их основе сразу же принимаются решения, в связи с чем эффективность жизненного цикла IoT-продукта напрямую зависит от выбранного языка программирования и того, насколько легко он позволяет реализовать высокоуровневое взаимодействие между различными устройствами и наладить обмен данными во всей экосистеме.
И здесь нам не обойтись без JavaScript!
JavaScript для разработки ПО
На современном этапе разработка программного обеспечения без JavaScript кажется немыслимой. Согласно опросу разработчиков, проведенному Stack Overflow в 2019году, JavaScript вот уже 7лет остается самым популярным языком разработки. Немаловажно и то, что на 95% всех сайтов JavaScript используется как язык программирования на стороне клиента.
С помощью JavaScript на стороне клиента можно писать пользовательские сценарии, создавая динамичные и интерактивные веб-страницы. Вместе с тем можно использовать кросс-платформенные среды выполнения наподобие Node.js для написания серверного кода на JavaScript.
Выбираем JavaScript для IoT
JavaScript это не только веб-приложения. Если вы умеете программировать на JavaScript, вы можете заняться разработкой приложений для Интернета вещей.
Есть несколько вариантов использования JavaScript для разработки IoT-приложений.
Метод клиент сервер
Вы можете запустить сценарий JavaScript на своем компьютере (сервере) и отправлять сигналы на устройство-клиент (вещь). Этот режим идеально подходит для сценариев, в которых вещи не могут исполнять даже простейший код JavaScript.
Встроенный JavaScript
Код JavaScript можно запускать с помощью оптимизированных под малые объемы памяти движков прямо на IoT-устройствах. На устройствах могут использоваться такие фреймворки, как JerryScript.
JavaScript на одноплатных компьютерах
Исполнение кода JavaScript или Node.js на одноплатных компьютерах не вызовет никаких проблем.
JavaScript прекрасно подходит для разработки IoT-решений, поскольку он может реагировать на события и исполнять код асинхронно. Также этот язык отлично подходит для быстрой разработки прототипов.
К тому же большинство организаций хотят либо сотрудничать с компанией-разработчиком IoT-решений, либо нанять IoT-разработчиков, которые смогут создать на JavaScript единый интерфейс для различных устройств.
Что ж, теперь рассмотрим основные причины выбрать JavaScript для IoT-проекта.
Пять основных причин выбрать JavaScript для IoT-проекта
-
Node.js
-
Управление памятью
-
Событийно-ориентированное программирование
-
Простота внедрения
-
Библиотеки и фреймворки JavaScript
Node.js
Это кросс-платформенная среда выполнения JavaScript с открытым кодом, позволяющая создавать решения для обработки данных в реальном времени.
В сфере IoT она пригодится для обработки большого количества запросов, генерируемых различными датчиками, маячками, передатчиками и электродвигателями. Node.js позволяет отладить операции запрос ответ и выполнять их быстрее.
К тому же в Node.js используются сокеты и протокол MQTT (MQ Telemetry Transport), которые обеспечивают непрерывную передачу данных в IoT-приложениях.
В состав Node.js входит менеджер пакетов NPM, который включает более 80 пакетов для одноплатных IoT-совместимых компьютеров, таких как Arduino, BeagleBone Black, Raspberry Pi и Intel IoT Edison. Таким образом, службы разработки на Node.js позволяют быстро создавать надежные IoT-приложения.
Управление памятью
Работая с такими языками, как C, программистам приходится вручную выделять и освобождать память с помощью методов malloc(), calloc(), realloc() и free(). У программистов JavaScript в этом нет необходимости.
В JavaScript используется сборщик мусора, который автоматически выделят память по мере создания объектов, строк и т.д. и освобождает ее, если они больше не используются.
Благодаря функции сборки мусора IoT-разработчики могут полностью сосредоточиться на проекте, не отвлекаясь на управление памятью. В определенной степени автоматическое освобождение неиспользуемой памяти обеспечивает стабильную работу IoT-решения, так как сборщик мусора исключает утечки памяти.
Событийно-ориентированное программирование
В приложениях с управлением по событиям каждое устройство реагирует на события определенным поведением. JavaScript отлично подходит для разработки таких приложений.
Циклы событий в JavaScript позволяют выполнять несколько задач одновременно. Благодаря этому возможно реагирование в режиме реального времени, при этом на одно и то же событие могут реагировать несколько устройств.
Поддержка событийно-ориентированного кода в JavaScript позволяет существенно продлить время работы от батареи.
Простота внедрения
JavaScript, в отличие от C++, Ruby и Python, прост в изучении и внедрении. Это один из самых распространенных языков программирования, с которым внедрение IoT-решений не составит труда. Он эффективен в разных средах, в том числе на шлюзах и в облаке.
Библиотеки и фреймворки JavaScript
В последнее время JavaScript все чаще используется для разработки приложений, и число библиотек и фреймворков JavaScript тоже растет.
JerryScript
Это легкий движок JavaScript, который используется на устройствах с очень ограниченными ресурсами, например на микроконтроллерах. JerryScript поддерживает локальную компиляцию и исполнение и предоставляет доступ к периферийным устройствам через JavaScript.
Cylon.js
Cylon.js это фреймворк JavaScript для робототехники, аппаратных вычислений и IoT. Это простое и эффективное решение для разработки приложений, которые работают одновременно на нескольких разнородных устройствах. Кроме того, Cylon.js поддерживает более 50 платформ, а также интерфейс ввода/вывода общего назначения через общий набор драйверов, включенных в модуль cylon-gpio (тоесть модуль Cylon для интерфейса ввода/вывода общего назначения [GPIO]).
Johnny-Five
Johnny-Five это фреймворк JavaScript, который используется для контроля компонентов оборудования на основе различных микропроцессоров и однокристальных систем. Он подойдет для всех, кто собирается разрабатывать решения для робототехники на JavaScript.
IoT.js
IoT.js это межоперационная сервисная платформа для Интернета вещей, в основе которой лежат веб-технологии. Она может использоваться на устройствах с ограниченными ресурсами, которые потребляют всего несколько килобайт оперативной памяти. Поэтому она поддерживает широкий спектр вещей.
Резюме
Безусловно, JavaScript популярный язык программирования веб-решений. Поэтому вполне разумно использовать его для программирования устройств, которые уже являются частью Интернета. Кроме того, в пользу JavaScript для IoT говорят такие преимущества этого языка, как Node.js, управление памятью, событийно-ориентированное программирование, простота внедрения и большое количество библиотек и фреймворков.
Перевод материала подготовлен в рамках курса "JavaScript Developer. Basic".
Всех желающих приглашаем на демо-урок Базовое использование системы контроля версий Git. На этом открытом занятии мы поговорим, зачем нужна система контроля версий (и нужны ли нам для этого отдельные программы), почему гит, и как мы работаем с гит в рамках курса. А заодно немного попрактикуемся, чтобы будущие студенты представляли, как проходит процесс сдачи домашних заданий.