JavaRush /Блог /Java Developer /Java и Интернет вещей. Как стать успешным IoT-девелопером...

Java и Интернет вещей. Как стать успешным IoT-девелопером?

Статья из группы Java Developer
Интернет вещей (Internet of Things, IoT) как концепция на слуху уже давненько — не первый год он фигурирует в списке трендовых ниш, за которыми будущее. Наряду с big data, AI и рядом других популярных и бурно развивающихся отраслей. Java и Интернет вещей. Как стать успешным IoT-девелопером? - 1Но в последние годы 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. Java и Интернет вещей. Как стать успешным IoT-девелопером? - 2По мнению Карен Панетты (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-устройства для сбора данных и их последующего анализа. Типы данных, в зависимости от вида устройства и его датчиков, могут быть самыми разными, от геолокации до сердечного ритма и пищевых предпочтений. Java и Интернет вещей. Как стать успешным IoT-девелопером? - 3Сбор данных с помощью IoT — это определенно один из важных трендов, который сейчас только начинает набирать обороты. Поэтому разработчикам важно понимать как работают процессы, ответственные за получение, обработку и хранение этих данных, а также их последующее использование. Для сбора и аналитики данных разрабатываются специальные системы, разобраться в которых без хотя бы базовых знаний в бизнес-аналитике будет достаточно сложно.

Машинное обучение и AI

Еще один тренд ближайшего будущего. Хотя на сегодняшний день далеко не все IoT устройства используют машинное обучение, в будущем их число будет постоянно увеличиваться. Машинное обучение — это область применения искусственного интеллекта (AI), включающая в себя предоставление компьютерам доступа к данным, которые они используют для обучения. Поскольку IoT девайсы способны собирать огромное количество данных, их потенциал для машинного обучения просто огромен. Способов применения данной технологии — огромное количество: от простой персонализации, то есть способности устройств подстраиваться под конкретного пользователя, до более глобальных решений типа “умных” городов.

Безопасность

Безопасность в IoT-сфере — это тренд не новый, но набирающий важность. Поскольку IoT-устройства подключаются к Интернету, а также образуют единую сеть с другими девайсами, их защищенность становится проблемой. Именно безопасность называют одним из основных препятствий на пути массового распространения Интернета вещей, ведь у IoT-девайсов зачастую есть доступ ко множеству данных о повседневной жизни пользователей. Поэтому многие эксперты советуют IoT-кодерам уделять внимание самообразованию в этой сфере. Причем сюда входит не только защита от взломов как таковая, но также такие понятия, как этика данных, конфиденциальность и ответственное отношение к приватной информации. Все это следует учитывать при разработке приложений для IoT, чтобы потом не столкнуться с проблемами и справедливым негодованием конечных юзеров.

Выводы

Подводя итоги, общие рекомендации для IoT-разработчиков сводятся к известной директиве “учиться, учиться и еще раз учиться”. Интернет вещей — это стремительно набирающая популярность сфера, в которой будет довольно легко найти себе применение квалифицированному Java-разработчику. Более того, будучи все еще нишей относительно малоразвитой, IoT открывает широчайшее поле для самореализации. Но для этого нужно не только “оставаться на переднем крае прогресса,” отслеживая все новости и последние тренды, но и углублять свои практические знания, изучая различные аспекты данной ниши, не ограничиваясь всего лишь программным кодом.
Комментарии (4)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
wan-derer.ru Уровень 40
11 сентября 2020
Это не статья, а какая-то заготовка статьи, просто что-то накидано, типа: "потом разберусь и напишу"... "научиться спаивать вместе простые схемы и связывать их с программным обеспечением" - это вообще не по-русски. Нет никакой конкретики. Упомянута Raspberry Pi. Ну да, там Линупс, наверно там можно запустить Жава-машину. Класс! А дальше что? "Здравствуй мир" никому не нужен. Нужно общение с железом: i2c, SPI, GPIO. Уже есть фреймворк, который это обеспечит? Как организовать общение с драйверами подключаемых устройств, которые вно не на Жаве писаны? Я слышал что под Распу очень радостно пишут на Питоне и уже много чего готового понаписано. Я вот параллельно в Жавой курю Питон чтобы можно было разбираться в готовых проектах, хотя бы не спотыкаясь о синтаксис :) Дальше. Распа названа "недорогой". Ну да, если сравнивать с компом. Но в каждый подрозетник её не поставишь: даже если брать дешёвые китайские инкарнации типа Оранж - это 3-4 тыр. Дороговато для "мозгов датчика". Для этого применяют AVR Tiny/Mega если связь по проводам или ESP8266/ESP32 для беспроводной связи. Про AVR говорить не будем, ESP8266 оставим как устаревшую (хотя это не так, ну да ладно). А вот как писать на Жава для ESP32? Весьма приличный камень: 2 ядра, одно для WiFi, другое общего назначения, документация худо-бедно есть, стоит недорого. Уже есть фреймворк на Жава? Или для другого подобного процессора? Я сейчас не иронизирую, мне правда интересно что есть в этой сфере. Мне мелкие железки нравятся больше чем сервера/кластеры с фейсбуками. И сократить число инструментов для разработки какой-то системы было бы полезно. А если Жава так универсальна что может и так, и сяк - то это прекрасно! Отсюда вопрос, что есть уже готового? пока видел только статью на Хабре по Java ME, ещё не читал, отложил на будущее.
Anuar Уровень 16
17 декабря 2019
Отличная статья, спасибо. Хотелось бы узнать рекомендации на каких ресурсах можно было получить уроки по IoTдля Java разработчиков
naut92 Уровень 29
14 декабря 2019
я тоже так думал раньше, что суть IoT в том, все закциклено на приложениях на конкретных устройствах. Но мне кажется, что это не совсем так. Вам необязательно приобретать какие-то специальные устройства. Мне кажется, что вообще, время небраузерных приложений прошло. Вы берете обычный онлайн сервис, а потом уже из него вы приобретаете то, что вам необходимо. Ну например: Вы ищете бесплатный паркинг в Вашем городе. Вам не нужен для этого GPS-датчик, он и так у вас в тф. А мое приложение делает все из браузера, достаточно авторизоваться. Если вы хотите расширить функционал - вы можете докупить какие-то датчики, к примеру, давления или освещенности для дома. Но по-прежнему, всей системой будет управлять мое браузерное приложение. А датчиков, даже до эры IT инженеры придумали и так дофига, только раньше они были аналоговые, но их уже давно превратили в цифровые, это не сложно, у них просто у всех есть свои протоколы передачи данных, несложные. Например, на этом построены все роботизированые заводы по сборке роботов и авто в Японии и США.