Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
В мире, где цифровая трансформация правит бал, Интернет вещей (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». На этом открытом занятии мы поговорим, зачем нужна система контроля версий (и нужны ли нам для этого отдельные программы), почему гит, и как мы работаем с гит в рамках курса. А заодно немного попрактикуемся, чтобы будущие студенты представляли, как проходит процесс сдачи домашних заданий.