13 подписчиков

8 Фреймворков Java для встраиваемых устройств

Разработчики, пишущие встроенные Java-приложения, имеют на выбор множество фреймворков и других инструментов. Вот лучшие фреймворки Java, используемые сегодня для встраиваемой разработки.

Разработчики, пишущие встроенные Java-приложения, имеют на выбор множество фреймворков и других инструментов. Вот лучшие фреймворки Java, используемые сегодня для встраиваемой разработки.

У создателей Java было видение языка как “напиши единожды, запускай везде", и их успех не мог быть более очевидным, чем в мире встраиваемых приложений. Возможность написать только одну версию Java-программы и везде запускать почти одни и те же двоичные файлы - привлекательна для команд, создающих программное обеспечение для небольших устройств и промышленных компьютеров. Во многих случаях разработчики мало что знают о процессоре, который будет работать в конечном поставляемом продукте, и им это не нужно. Такая гибкость java для запуска в любом месте также помогает продуктовым командам в долгосрочной перспективе, поскольку второе, третье или четвертое поколение продукта может работать на разных чипах. Программное обеспечение обычно может быть адаптировано практически без дополнительных изменений.


Сегодня для создания встроенных Java-приложений используются многочисленные фреймворки. Некоторые из них являются общими инструментами, предназначенными для использования во многих типах машин. Часто они являются лучшей отправной точкой для команд, создающих новые приложения. Другие фреймворки были разработаны для конкретного устройства или семейства устройств. Они могут включать как основные, так и функции, поддерживающие устройства или другие продукты, на которых будет работать ваше приложение. Наиболее распространенным примером такого типа встроенного Java-фреймворка может быть Android, который разработчики используют для создания приложений для телефонов Android, Chromebook и других устройств, таких как телевизоры. Вот восемь отличных встроенных Java-фреймворков. Каждый из них использует стабильность и широту платформы Java и сторонних библиотек для небольших устройств и встроенных компьютеров. Эти фреймворки адаптируют традиционные методы и подходы Java для более быстрой и легкой работы на рынке встраиваемых систем.

Android

Android, вероятно, является наиболее известным встроенным фреймворком Java. Он появился как основа для создания приложений для телефонов, которые Google создавала, чтобы конкурировать с Apple. Большая часть исходной кодовой базы была с открытым исходным кодом, и теперь многие другие типы устройств (не только телефоны) поддерживают приложения для Android. ChromeOS от Google, используемый в хромбуках, является лишь одним из примеров. Десятки маленьких коробочек выводят приложения для Android на большие плоские экраны для гостиной. Написание приложений для Android - это простой способ настроить таргетинг на все эти устройства. Это также позволяет создателям устройств открывать свои продукты сторонним разработчикам. Некоторые разработчики работают только с базовыми библиотеками Android, которых более чем достаточно для многих программ. Другие используют фреймворки, которые находятся поверх Android. Некоторыми из наиболее популярных являются Ionic, Flutter, и Framework7. Общий функционал позволяет разработчикам перепрофилировать дизайн для других платформ, таких как iOS. Например, Flutter нацелен на шесть различных платформ.

Java Embedded Framework

Java Embedded Framework упрощает разработчикам написание высокоуровневого Java-кода, который взаимодействует с интерфейсами, распространенными во встраиваемых системах. Популярными примерами являются Raspberry Pi и Orange Pi. С помощью этой платформы вам не нужно осваивать низкоуровневое программирование, необходимое для взаимодействия с аппаратными интерфейсами, такими как SPI, I2C, Serial, GPIO, или One Wire. Разработчики фреймворка уже сделали большую часть этого за вас. Java Embedded Framework разбит на несколько основных модулей. Основной модуль подключается непосредственно к уровню ОС Linux, который управляет платой. Это упрощает использование чистой Java для подключения ко многим задачам на уровне операционной системы. Существуют также драйверы для основных аппаратных компонентов, обычно встречающихся на этих небольших платах.

Oracle Event Processing

Одной из задач встроенного устройства является сбор данных. Заводские цеха, например, полагаются на встроенные машины для отслеживания производства и выявления аномалий. Oracle Event Processing framework - это облегченная версия Oracle Event Driven Server, которая позволяет устройствам захватывать события, фильтровать их и передавать по мере необходимости. Часть синтаксиса конфигурации заимствована из SQL, что делает его относительно простым в освоении. Модель обработки событий фреймворка также может просматривать поток событий для поиска корреляций и других закономерностей в данных.

Jersey

Если задание требует программирования встроенного устройства для реагирования на события RESTful, Jersey будет хорошим выбором. Он оптимизирован для манипулирования пакетами JSON, которые приходят и уходят, расширяя JAX-RS. Архитекторам нравится это решение, потому что оно может быть одним из лучших способов автоматизации взаимодействия с устройством. Jersey предлагает несколько дополнительных функций, в том числе возможность “разбивать” ответы на части. Это означает хранение данных и последующую отправку их одним большим фрагментом. Разделение на части особенно полезно для устройств, которые не всегда подключены к Интернету. Это также полезно для снижения нагрузки на любой центральный сервер, который взаимодействует со многими устройствами.

Vert.x

Многие думают о Vert.x как об основы для создания полнофункциональных веб-приложений. Что приятно, так это то, что он разбит на модули, и вам не обязательно использовать их все. Ядро Vert.x содержит большую часть важного кода для написания сервисов, которые взаимодействуют с миром и машиной. Любой, кто создает базовый инструмент, может полагаться на сетевые протоколы и протоколы файловой системы Vert.x framework для настройки потоков, которые манипулируют входящими и исходящими запросами. Некоторые из модулей Vert.x могут быть идеальными для встраиваемых задач. Например, сервисные библиотеки OpenAPI и API выполняют многие функции по поддержке API. Библиотека GraphQL включает в себя процедуры, необходимые для поддержки вызовов GraphQL. Эти библиотеки ориентированы в основном на создание веб-приложений и веб-служб, но их также можно использовать для упрощения взаимодействия.

Dropwizard

Если цель состоит в том, чтобы создать простой, мощный и RESTful веб-сервис, многие разработчики Java обращаются к Dropwizard. Это также отличный выбор для встраиваемых приложений. Вы можете использовать API веб-служб для управления и настройки устройств, а другие устройства могут получить доступ к сервису через его API. Люди могут управлять сервисом через статические HTML-страницы с небольшим количеством JavaScript.
Dropwizard разбит на ряд более мелких модулей, которые могут быть включены или исключены в зависимости от необходимых вам функций. Модули ядра и базы данных хороши для выполнения базовых задач. Пользователи, которые взаимодействуют с вашими сервисами, могут использовать модули forms или views. Аутентификация, как правило, является хорошей идеей, и модуль аутентификации Dropwizard поддерживает протоколы basic и OAuth2.

Apache Mina

Любое приложение, которому требуется надежный сетевой уровень, может использовать Apache Mina чтобы манипулировать некоторыми различными соединениями NDP (Neighbor Discovery Protocol) или TCP безопасным и надежным способом. Код построен поверх новых классов ввода-вывода (Java NIO) чтобы разработчики могли более абстрактно относиться к поступающим или уходящим данным. Код для него в значительной степени управляется событиями, что избавляет разработчиков от необходимости заботиться о сетевом интерфейсе.

Java Card

Некоторые встроенные процессоры имеют дополнительные уровни безопасности для защиты конфиденциальных данных, таких как детали финансовых транзакций. Оракловский Java Card поддерживает множество приложений, работающих внутри таких защищенных анклавов, как защищенные от несанкционированного доступа чипы. Эти процессоры часто работают медленнее и имеют меньше памяти, а фреймворк Java Card урезан, чтобы работать плавно с меньшим количеством ресурсов. Как насчет веб-фреймворков Java?
Хотя в этой статье рассматриваются фреймворки, предназначенные для встраиваемых машин, реальность такова, что все больше и больше разработчиков создают веб-приложения для встраиваемых устройств. Устройства меньшего размера могут быть менее мощными, но у них часто достаточно оперативной памяти и мощности процессора для запуска веб-серверного приложения для нескольких клиентов. Приложение, которое не предназначено для миллиарда пользователей в открытом Интернете, может отлично работать во встроенной системе. Часто это хорошее решение, поскольку оно позволяет пользователям подключаться к устройству через веб-приложение. Разработчики могут использовать все стандартные функции базового веб-сайта. Многие из популярных фреймворков веб-приложений замечательно хорошо работают на небольших машинах. Отчасти это связано с стремлением сократить и упростить серверную часть веб-приложений Java. Новые, легкие фреймворки, такие как
Spring Boot, Vert.x, и Vaadin (также Hilla),все это надежный выбор. Некоторые разработчики встраиваемых систем даже обходятся более старыми и тяжелыми фреймворками, такими как Spring, Struts, или JavaServer Faces. Все эти фреймворки относятся к тем годам, когда серверы были гораздо менее мощными. Они могут хорошо работать в сценариях, когда одному пользователю необходимо взаимодействовать с программным обеспечением, а встроенное устройство является относительно мощным.

Использование стандартной Java для встроенных приложений

Некоторым разработчикам не нужно использовать встроенный фреймворк, потому что они получают необходимые им библиотеки и функции из стандартной версии Java. Java Micro Edition (JME) поставляется в нескольких версиях, и некоторые из них специально разработаны для встраиваемых систем. Они предоставляют важные библиотеки Java, такие как библиотека OAuth для аутентификации и библиотека JSON для синтаксического анализа и составления сообщений. В некоторых случаях этого может быть достаточно. Разработчики с более крупными и мощными платами могут даже использовать Java Standard Edition для встраиваемых приложений на небольших устройствах. Oracle Java SE Embedded - это стандартная версия Java, настроенная для встраиваемого мира. Oracle поддерживает множество различных типов устройств, предоставляя стандартные двоичные файлы. Например, Raspberry Pi и несколько других небольших встраиваемых систем уже готовы. Oracle также поддерживает важные сегменты рынка, такие как телефоны и телевизоры. Для базовых проектов разработки встроенных Java стандартная загрузка из Oracle может предложить все, что вам нужно.