Java — динамично развивающийся язык программирования с почти 20-летней историей. Будучи разработанным в начале 90-х годов для управления электробытовыми приборами, сегодня он с легкостью обрабатывает 3D-модели. Java подразделяется на Java SE, EE и ME. В статье речь пойдет о Java ME (Micro Edition) — встраиваемой платформе, предназначенной для мобильных устройств, а также будут рассмотрены возможности и перспективы GSM-модулей Cinterion серий Industrial Java последнего поколения: 3G-модуля EHS5 и бюджетного 2G-модуля BGS5.
Java занимает первое место в ежемесячном рейтинге популярности средств программирования Tiobe Programming Community Index. В компании Tiobe считают, что популярность Java растет, скорее всего, благодаря успеху Android-устройств. По данным за август 2013 г. у Java рейтинг популярности 15,978%, а у С — 15,974%.
Использование Java отделяет процесс разработки программного обеспечения от циклов разработки аппаратного обеспечения, что даёт высокую гибкость стратегий разработки продуктов и выхода на рынок. Java успешно внедряется в различные М2М-системы в самых разных отраслях. Кроме того, язык является кроссплатформенным, что является значительным плюсом для программистов.
Java — объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems. Java-приложения обычно компилируются в специальный байт-код и работают на любой виртуальной Java-машине (JVM) вне зависимости от компьютерной архитектуры. Java ME разработана для встраиваемых систем и применяется в промышленных компьютерах, контроллерах в конфигурации CDC (Connected Device Configuration). Для устройств с ограниченными ресурсами, таких как беспроводные модули, разработана аппаратная конфигурация CLDC (Connected Limited Device Configuration). Минимальные требования CLDC 1.1:
- процессор 16,32-бит с частотой от 16 МГц
- ПЗУ 160 кбайт
- ОЗУ 192 кбайт
- низкое энергопотребление
- подключение к любому виду сети.
В отличие от мобильных телефонов, устройства без экранов должны соответствовать профилю IMP, который содержит в себе аналогичный набор библиотек за исключением графических. Аппаратная часть GSM-модулей Cinterion с Java соответствует CLDC 1.1 HI. Connected Limited Device Configuration HotSpot Implementation Virtual Machine — высокопроизводительная виртуальная Java-машина для устройств, ограниченных в ресурсах, разработанная компанией Oracle. Программная часть всех выпускаемых сегодня GSM-модулей Cinterion с Java соответствует профилю IMP-NG (NEXT Generation) c поддержкой I²C, SPI, эмуляторов АТ-команд, безопасных соединений и протоколов (HTTP) и др.
Первыми в мире, кто применил Java ME в GSM-модуле, была компания Siemens (сегодня Gemalto M2M). Более 10 лет назад Siemens представила свой первый GSM-модуль TC45 со встроенной Java-машиной; прогресс не стоит на месте — GSM-модули совершенствуются, выпускаются новые, более производительные, функциональные и современные. В свою очередь развивается линейка Java-модулей Cinterion Industry.
И, что характерно, Java появляется в большем количестве в новых продуктах Cinterion, включая 3G-модули. Обновляется в модулях и Java. В 2010 г. в связи с приобретением Sun Microsystems корпорацией Oracle Java получила новый импульс для развития и была выпущена версия 7.
Новые GSM модули BGS5 и EHS5
Новые компактные модули Cinterion серии Industrial - BGS5 и EHS5 - созданы в едином форм-факторе и на одной платформе. Платформа включает в себя новую Java-концепцию — мультимидлетность, то есть возможность одновременного запуска и работы нескольких мидлетов (Java-приложений). Модули устанавливают надежные TCP/IP-соединения благодаря обновленной политике безопасности (TLS/SSL-шифрование) и могут безопасно обновляться по беспроводным GSM-каналам (встроенное программное обеспечение — FOTA, Java-приложения — OTAP, теперь и по HTTPS). Использование стандартных методов разработки отделяет процессы получения разрешений на использование решения от процесса разработки программного обеспечения, что позволяет распараллелить процессы и сокращает время вывода изделия на рынок.
Модули выполнены на базе процессоров ARM11 (520 MГц), имеют встроенный расширенный TCP/IP-стек и оснащены интерфейсами: USB 2.0; два UART; 16 GPIO; ADC; I²C; один цифровой (аудио).
3G-модуль EHS5, в отличие от 2G-модуля BGS5, функционирует на базе HSPA + Intel-чипсета и относится к новейшему поколению модулей серии Evolution, которое характеризуется высокой скоростью передачи данных: до 7,2 Мбит/с (UL) и до 5,76 Мбит/с (DL). Если сравнивать с ранее упомянутым модулем TC65i: на 68% выше производительность; на 58% быстрее TCP/IP время обращения; на 66% быстрее время передачи данных (открытие TCP/IP-сессии).
Компоненты Java-среды на GSM-модулях Cinterion
Java ME делится на наборы прикладных программных интерфейсов (API), конфигурации, профили и дополнительные пакеты, например CLDC и MIDP (Mobile Information Device Profile — профиль для мобильных информационных устройств). Конфигурация для мобильных устройств называется CLDC (Connected Limited Device Configuration) и является фундаментальной составной частью архитектуры платформы Java ME.На рис. 3 схематично представлены Javaкомпоненты новых модулей BGS5 и EHS5. Приведем некоторые пояснения: JVM (Java Virtual Machine) — виртуальная Java-машина для запуска мидлетов. Мидлетами называются приложения Java ME. JSR 139 (Java Specification Request) CLDC 1.1 — конфигурация CLDC и профиль MIDP 2.1. JSR 228 IMP-NG — API профиля информационного модуля нового поколения (TCP/ IP и ASC0/1). JSR 75 FileConnection — работа с файловой системой модуля. ATCommand — API-интерфейс Java к синтаксическому AT-анализатору. Поддерживает выполнение АТ-команд аналогично управлению модулем через последовательный интерфейс. Разработчики ПО могут использовать только те API, которые аппаратно поддерживаются модулем (по шине I²C/SPI, контактам GPIO и др.): I²C/SPI API. GPIO API. ADC/DAC API — считывание значений сигнала со входов АЦП и управление широтно-импульсной модуляцией (ШИМ) выходовЦАП. Это позволяет более эффективно использовать JVM, так как сокращает размер библиотек и не вводит в заблуждение программистов.
Программистами Cinterion написаны следующие собственные библиотеки: com.cinterion.io — классы доступа к функционалу модуля. c.c.location — классы для работы с GPS-навигацией/тригонометрическими вычислениями. c.c.misc — другие классы, например Watchdog. К новым Java API в модулях BGS5 и EHS5 можно отнести следующие: JSR177 Security&Trust — поддержка криптографических сервисов. JSR280 XML — «парсинг» и создание XML. Передача данных между мидлетами (PipeConnections, AT^SJAM) и «внутри»мидлетов; двунаправленные потоки; принцип«клиент–сервер». JSR177 Security & Trust относится к стандартным API J2ME.
В принципе модель безопасности в GSM-модулях Cinterion с Java охватывает две основные области. Одна из них — это обеспечениебезопасных соединений для передачи данных мидлетов (HTTPS, защищенное соединение). Вторая — это выполнение подписанных/неподписанных мидлетов. Некоторым приложениям (мидлетам) требуется доступ к файловой системе для своей работы. Однако модельбезопасности MIDP требует, чтобы приложение было подписано, ибо в противном случае мидлет не сможет получить доступ к закрытым функциям и не будет работать. Сертификаты копируются через последовательный интерфейсво flash-память модуля.
Средства разработки
Cinterion выпускает программный инструментарий CMTK (Cinterion Mobility Toolkit), интегрируемый в свободно распространяемую среду разработки Java IDE Netbeans (Oracle) или Eclipse (IBM). Откомпилированные Javaприложения сохраняются в виде файлов *.jar. С помощью пакета Module Exchange Suite (MES) или по радиоканалу производится копирование файла *.jar во flash-память модуля. Наличие файла *.jad также является обязательным. В нем содержится информация о фактическом содержимом соответствующего файла *.jar (включая имя файла, размер, версию и т. д.). В программе Cinterion MES при отключении функции доступа к модулю с помощью команды AT^SJSEC доступ к файловой системе модуля блокируется.Java и Cinterion: особенности и преимущества
GSM-модули Cinterion в комплексе с Java представляют мощный инструмент разработки мобильных решений для системных интеграторов и других разработчиков GSM-оборудования.Основные преимущества устройств:
- Свободно распространяемый (бесплатный) компилятор
- Встроенная flash-память (8 Мбайт в модуле EHS5, 4 Мбайт — в BGS5)
- Собственные библиотеки (API). В новых модулях Cinterion все интерфейсы, в том числе USB, стали доступны через Java API
- Постоянно совершенствуемый программный инструментарий CMTK
- Многозадачность и мультиапплетность играет немаловажную роль в современных программных мобильных решениях. В модулях последнего поколения одновременно можно запускать несколько многопотоковых мидлетов
- Возможность передачи данных между мидлетами
- Высокий уровень безопасности Java-приложений обеспечивается защитой от несанкционированного запуска и копирования, от запуска нескольких приложений и защитой передачи данных по беспроводным каналам связи благодаря протоколам шифрования TLS/ SSL (HTTPS, защищенные соединения), сертификату X.509 и др.
- Возможность удаленной установки, обновления или удаления мидлетов — OTAP (Over The Air Provisioning — «по воздуху») по беспроводным GPRS/3G/CSD-каналам. Запуск производится с помощью AT-команды или SMS с парольной защитой. Имеется возможность отслеживания процесса по последовательному интерфейсу, передача на сервер «кода», операция удаления с перезапуском модуля и пошаговое обновление малых фрагментов кода
- Возможность отлаживать мидлеты в интегрированной среде разработки (NetBeans/ Eclipse) на ПК. Для этого модуль подключается к ПК по USB-интерфейсу (или RS-232). Мидлеты можно редактировать, компилировать, отлаживать и запускать с ПК.
Пример использования Java
Ниже приведен пример кода по управлению GPIO-контактами Java-модуля Cinterion в качестве выходов.//Импортируем стандартные библиотеки и библиотеку //Cinterion для работы с GPIO import java.io.IOException; import javax.microedition.midlet.*; import com.cinterion.io.OutPort; import java.util.Vector; public class IMlet extends MIDlet { public void startApp() { //инициализируем экземпляр класса //и вспомогательные данные OutPort oport = null; Vector pins = new Vector (2); Vector values = new Vector (2); pins.addElement(«GPIO6»); values.addElement(Integer.valueOf(«1»)); pins.addElement(«GPIO7»); values.addElement(Integer.valueOf(«1»)); //пробуем создать экземпляр //и прочитать состояние портов try { oport = new OutPort(pins, values); System.out.println(oport.getValue()); } catch (IOException ex) { ex.printStackTrace(); } //останавливаем выполнение на 10 с try { Thread.sleep(10000);
} catch (InterruptedException ex) { ex.printStackTrace(); } //пробуем установить GPIO6 выкл., GPIO7 вкл. try { oport.setValue(2); System.out.println(oport.getValue()); } catch (IOException ex) { ex.printStackTrace(); } //останавливаем выполнение на 10 с try { Thread.sleep(10000); } catch (InterruptedException ex) { ex.printStackTrace(); } // освобождаем GPIO от работы с JAVA //(теперь они доступны через АТ-команды) try { oport.release(); } catch (IOException ex) { ex.printStackTrace(); } destroyApp(true); } public void pauseApp() { } public void destroyApp(boolean unconditional) { notifyDestroyed(); } }
Заключение
Новые ультракомпактные модули EHS5 (3G) и BGS5 (2G) сочетают в себе весь накопленный опыт Gemalto по созданию М2М-продуктов и решений на базе JAVA. По сравнению с младшим в серии Evolution модулями разработчикам удалось весьма значительно повысить их производительность. Java ME позволяет клиентам, работающим в сфере M2M, в максимальной степени расширить функциональные возможности своих разработок. Все возможности и преимущества — «в руках» Java-программистов.
Благодаря наличию огромного числа разработчиков во всем мире, Java позволяет легко находить специалистов для создания приложений. Наличие JAVA сокращает затраты на дополнительные внешние процессоры и карты памяти. Плюс к этому с BGS5 разработчики могут быстрее перейти от 2G- к 3G-диапазонам передачи данных (в ближайшем будущем и к 4G(LTE)), т. к. модули EHS5 Rel. 2 и BGS5 выполнены в едином форм-факторе.
Наталья Коротких, Беспроводные технологии, №3, 2013