Интернет вещей (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, чтобы потом не столкнуться с проблемами и справедливым негодованием конечных юзеров. Java и Интернет вещей. Как стать успешным IoT-девелопером? - 4

Выводы

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