Интернет вещей (Internet of Things, IoT) как концепция на слуху уже давненько — не первый год он фигурирует в списке трендовых ниш, за которыми будущее. Наряду с big data, AI и рядом других популярных и бурно развивающихся отраслей.
Но в последние годы IoT начал активно проникать в нашу повседневную жизнь, а количество разработок в этой сфере постоянно растет, что выражается в появлении все большего числа новых вакансий для IoT-девелоперов. И вот тут-то эта тема становится интересной, потому что большинство IoT-кодеров в качестве основного языка программирования в данной нише используют Java (что неудивительно, но об этом позже). По популярности в среде IoT-программирования Java оставляет другие языки, такие как C, Python и C++, далеко позади.
IoT — из футуристической концепции в повседневную жизнь
Сегодняшний материал посвящен применению Java в сфере Интернета вещей, тому, как Java-разработчику повысить свою конкурентоспособность в IoT, а также последним трендам в этой нише. Но для начала следует разобраться в том, почему Java так популярен в IoT среде, а для этого не помешает в общих чертах напомнить читателю о том, что вообще такое этот самый Интернет вещей.
Internet of Things — это концепция, в рамках которой множество повседневных приборов и предметов бытовой электроники, от стиральной машины до чайника, компьютеризируются и подключаются к Интернету. Это открывает разные новые возможности: в частности, устройства Интернета вещей позволяют собирать и анализировать огромные объемы новых данных, адаптируя работу приборов под каждого пользователя.
Концепция IoT активно воплощается в жизнь, вместе с рядом смежных технологий, таких как автоматизация домов, видеоаналитика и искусственный интеллект. Например, в медицинской сфере ниша IoT набирает популярность, представляя инновационные устройства, которые могут отслеживать состояние пациентов, расположенных в отдаленных локациях.
Особенность Интернета вещей состоит в том, что каждое устройство или датчик сбора данных должны быть оснащены встроенным приложением, чтобы осуществлять весь этот функционал, который заложен в основу концепции IoT. И для создания таких вот встроенных приложений программисты предпочитают использовать именно Java.
Java и IoT — будто созданы друг для друга
На самом деле, изначально Java и создавался именно для этих целей, так что неудивительно, что он так хорошо подходит для создания IoT-приложений. В начале девяностых (разработка языка началась в 1990-м, а первая версия вышла уже в 1996-ом) Java появился как язык для написания приложений для устройств PDA (personal digital assistant), предков современных смартфонов. Позже, за следующие около десятка лет, Java постепенно трансформировался в более универсальную платформу, поскольку оказалось, что этот язык отлично подходит для создания приложений, работающих на множестве современных мобильных устройств.
Одна из причин того, почему Java и IoT такая замечательная пара в том, что приложения, написанные на Java, как правило очень нетребовательны к ресурсам. Дело в том, что в девяностых и начале двухтысячных тогдашние устройства располагали ограниченными объемами RAM-памяти и небольшой вычислительной мощностью. Во много раз меньше нынешних. И Java создавался именно для использования в этой ресурсоемкой среде, требующей функциональных приложений при минимальной вычислительной мощности. Эта безусловно достойная восхищения черта сохранилась в нем и по сей день, благодаря чему Java-приложения для IoT обладают очень скромными запросами, обходясь минимальными компьютерными ресурсами и памятью.
Эксперты: ключ к успешной разработке для IoT — в гибкости
По мере того как дома, машины, офисы, холодильники и кофеварки становятся все более “умными,” то есть по мере роста IoT-инфраструктуры, растет и потребность в разработчиках, которые будут обеспечивать правильную и защищенную работу данных устройств. А это открывает массу возможностей для Java-кодеров, только успевай рассылать резюме.
Какие знания и навыки стоит подтянуть тем, кто не желает упускать такую возможность и намерен стать уважаемым и, что конечно важнее, высокооплачиваемым IoT-разработчиком? К сожалению, простого ответа тут нет.
“Термин "IoT разработчик” на сегодняшний день трактуется весьма широко. В сфере Интернета вещей в целом есть ряд важных дисциплин, среди которых безопасность, сетевые технологии, системное проектирование, облачное программирование и программирование аппаратных устройств. Поэтому есть смысл стремиться к максимальной универсальности, чтобы быть гибким и брать на себя различные роли в команде разработчиков,” — советует Грег Горман (Greg Gorman), директор проекта IoT Developer Ecosystem в компании IBM.
По мнению Карен Панетты (Karen Panetta), профессора электротехники и вычислительной техники в Университете Тафтса, в отличие от других разработчиков, тем, кто работает в сфере IoT, очень полезно иметь хотя бы базовое понимание датчиков и беспроводной связи.
“Помимо вычислений, IoT это также мир машиностроения и гражданской инженерии, поскольку датчики собирают физические данные. Быть глубоким “IoT-технологом” очень сложно — нужно интересоваться миром и, в каком-то смысле, быть “человеком эпохи возрождения,” — отметил Брайан Кестер (Bryan Kester), глава по IoT-разработкам в компании Autodesk.
Практикуйтесь на Raspberry Pi и других микрокомпьютерах
Эллиот Шрок (Elliot Schrock), основатель и главный разработчик компании Thryv, советует кодерам практиковаться, выполняя проекты для устройств Raspberry Pi.
“Raspberry Pi —- это очень недорогие, крошечные компьютеры, которые часто используются для тестирования концептуальных проектов IoT. Кстати, это также отличный инструмент, на котором можно научиться спаивать вместе простые схемы и связывать их с программным обеспечением,” — сказал он.
С ним согласны и другие эксперты. Суз Хинтон (Suz Hinton), технический евангелист компании Microsoft, также отметила, что практические знания аппаратной части зачастую оказываются очень полезными для IoT-кодеров.
“Использование таких устройств, как Tessel 2, Particle Photon или даже скромного Raspberry Pi, помогает разработчикам быстро осваивать аппаратные средства и получать новые необходимые навыки. По сути, одна из основных особенностей написания кода для IoT состоит в том, чтобы научиться писать для очень небольших и более медленных компьютеров,” — считает она.
IoT-разработчик должен быть “одержим” новыми технологиями
С идеей максимальной универсальности и постоянного изучения нового для того, чтобы стать действительно успешным IoT-девелопером, согласны и другие эксперты.
По словам Элая Дау (Eli Dow), ученого-исследователя компании IBM, знания одной платформы и обладания одним специализированным набором навыков здесь недостаточно. “Платформа, под которую вы пишете, может устареть в течение шести месяцев-года. Системы датчиков постоянно меняются, одноплатные компьютеры и другие встраиваемые платформы продолжают развиваться, и вы должны уметь постоянно адаптироваться к изменениям платформ и такому бешеному темпу,” — сказал эксперт.
“Успешные IoT-девелоперы должны быть одержимы новыми технологиями, следить за новостями, знать обо всех актуальных трендах в индустрии — что сейчас популярно, что уже не актуально, а что может стать следующим прорывом. Это обеспечивает необходимую основу для освоения данной технологии и способности создавать программный код действительно высокого уровня,” — добавила Эрин Эссекс (Erin Essex), креативный директор компании Webonise.
Тренды
Если последовать советам экспертов и начать изучать тренды IoT-индустрии, мы убедимся в том, что они знают о чем говорят. Интернет вещей развивается действительно бурно, и активно находит себе применение все в новых и новых сферах. Поговорим о тех из них, где IoT только начинает набирать популярность и которые не приходят на ум первым делом при упоминании Интернета вещей.
Бизнес-аналитика и сбор данных
Вопреки расхожему мнению, IoT — это не только потребительская электроника. Интернет вещей охватывает практически все сферы бизнеса. Именно поэтому девелоперам важно понимать, как компании могут применять IoT-устройства для сбора данных и их последующего анализа. Типы данных, в зависимости от вида устройства и его датчиков, могут быть самыми разными, от геолокации до сердечного ритма и пищевых предпочтений.
Сбор данных с помощью IoT — это определенно один из важных трендов, который сейчас только начинает набирать обороты. Поэтому разработчикам важно понимать как работают процессы, ответственные за получение, обработку и хранение этих данных, а также их последующее использование. Для сбора и аналитики данных разрабатываются специальные системы, разобраться в которых без хотя бы базовых знаний в бизнес-аналитике будет достаточно сложно.
Машинное обучение и AI
Еще один тренд ближайшего будущего. Хотя на сегодняшний день далеко не все IoT устройства используют машинное обучение, в будущем их число будет постоянно увеличиваться.
Машинное обучение — это область применения искусственного интеллекта (AI), включающая в себя предоставление компьютерам доступа к данным, которые они используют для обучения.
Поскольку IoT девайсы способны собирать огромное количество данных, их потенциал для машинного обучения просто огромен. Способов применения данной технологии — огромное количество: от простой персонализации, то есть способности устройств подстраиваться под конкретного пользователя, до более глобальных решений типа “умных” городов.
Безопасность
Безопасность в IoT-сфере — это тренд не новый, но набирающий важность. Поскольку IoT-устройства подключаются к Интернету, а также образуют единую сеть с другими девайсами, их защищенность становится проблемой. Именно безопасность называют одним из основных препятствий на пути массового распространения Интернета вещей, ведь у IoT-девайсов зачастую есть доступ ко множеству данных о повседневной жизни пользователей.
Поэтому многие эксперты советуют IoT-кодерам уделять внимание самообразованию в этой сфере. Причем сюда входит не только защита от взломов как таковая, но также такие понятия, как этика данных, конфиденциальность и ответственное отношение к приватной информации. Все это следует учитывать при разработке приложений для IoT, чтобы потом не столкнуться с проблемами и справедливым негодованием конечных юзеров.
Выводы
Подводя итоги, общие рекомендации для IoT-разработчиков сводятся к известной директиве “учиться, учиться и еще раз учиться”. Интернет вещей — это стремительно набирающая популярность сфера, в которой будет довольно легко найти себе применение квалифицированному Java-разработчику. Более того, будучи все еще нишей относительно малоразвитой, IoT открывает широчайшее поле для самореализации. Но для этого нужно не только “оставаться на переднем крае прогресса,” отслеживая все новости и последние тренды, но и углублять свои практические знания, изучая различные аспекты данной ниши, не ограничиваясь всего лишь программным кодом.
Это не статья, а какая-то заготовка статьи, просто что-то накидано, типа: "потом разберусь и напишу"...
"научиться спаивать вместе простые схемы и связывать их с программным обеспечением" - это вообще не по-русски.
Нет никакой конкретики. Упомянута Raspberry Pi. Ну да, там Линупс, наверно там можно запустить Жава-машину. Класс! А дальше что? "Здравствуй мир" никому не нужен. Нужно общение с железом: i2c, SPI, GPIO. Уже есть фреймворк, который это обеспечит? Как организовать общение с драйверами подключаемых устройств, которые вно не на Жаве писаны? Я слышал что под Распу очень радостно пишут на Питоне и уже много чего готового понаписано. Я вот параллельно в Жавой курю Питон чтобы можно было разбираться в готовых проектах, хотя бы не спотыкаясь о синтаксис :)
Дальше. Распа названа "недорогой". Ну да, если сравнивать с компом. Но в каждый подрозетник её не поставишь: даже если брать дешёвые китайские инкарнации типа Оранж - это 3-4 тыр. Дороговато для "мозгов датчика".
Для этого применяют AVR Tiny/Mega если связь по проводам или ESP8266/ESP32 для беспроводной связи. Про AVR говорить не будем, ESP8266 оставим как устаревшую (хотя это не так, ну да ладно). А вот как писать на Жава для ESP32? Весьма приличный камень: 2 ядра, одно для WiFi, другое общего назначения, документация худо-бедно есть, стоит недорого. Уже есть фреймворк на Жава? Или для другого подобного процессора?
Я сейчас не иронизирую, мне правда интересно что есть в этой сфере. Мне мелкие железки нравятся больше чем сервера/кластеры с фейсбуками. И сократить число инструментов для разработки какой-то системы было бы полезно. А если Жава так универсальна что может и так, и сяк - то это прекрасно! Отсюда вопрос, что есть уже готового? пока видел только статью на Хабре по Java ME, ещё не читал, отложил на будущее.
я тоже так думал раньше, что суть IoT в том, все закциклено на приложениях на конкретных устройствах. Но мне кажется, что это не совсем так. Вам необязательно приобретать какие-то специальные устройства. Мне кажется, что вообще, время небраузерных приложений прошло. Вы берете обычный онлайн сервис, а потом уже из него вы приобретаете то, что вам необходимо. Ну например: Вы ищете бесплатный паркинг в Вашем городе. Вам не нужен для этого GPS-датчик, он и так у вас в тф. А мое приложение делает все из браузера, достаточно авторизоваться. Если вы хотите расширить функционал - вы можете докупить какие-то датчики, к примеру, давления или освещенности для дома. Но по-прежнему, всей системой будет управлять мое браузерное приложение. А датчиков, даже до эры IT инженеры придумали и так дофига, только раньше они были аналоговые, но их уже давно превратили в цифровые, это не сложно, у них просто у всех есть свои протоколы передачи данных, несложные. Например, на этом построены все роботизированые заводы по сборке роботов и авто в Японии и США.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ