Программирование устройств на Java

Автор: content Вторник, Апрель 10th, 2012 Нет комментариев

Рубрика: Java Mobile

Обзор

Компьютеры повсюду. Возрастающие возможности обработки встраиваются в устройства, размеры которых продолжают снижаться, характеристики компьютеров смещаются в сторону устройств меньших физических размеров и габаритов. Статья Билла открывает колонку Программирование устройств на Java и освещает вопросы использования программ Java для разработки этих специфических устройств. (2800 слов)

Не так давно компьютеры были огромными коробами, требующими мощной вентиляции и защиты. Они сокрывались в специальных комнатах, принадлежащих корпорациям и большим вычислительным центрам. Их было не так много, каждым пользовалось по несколько работников. Процессорное время стоило очень дорого, доступ и время работы часто были сильно ограничены. Да, теперь мир изменился!

Сегодня мы различаем три этапа развития вычислительной техники:

  • Эра больших машин: один компьютер, много людей
  • Эра ПК: один пользователь, один компьютер
  • Эра повсеместных вычислений: одна персона, много компьютеров

Большинство из нас используют компьютеры, встроенные в устройства и инструменты чаще, чем персональные компьютеры, рабочие станции и большие машины. Например, краткий обзор моего повседневного инвентаря показывает, что я использую лаптоп, несколько серверов и рабочую станцию. Но в машине, на которой я приезжаю на работу каждый день, находится больше процессоров, чем во всей традиционной компьютерной технике, которую я назвал! Добавив к последним все микрочипы в мобильных телефонах, электронных организаторах, микроволновых печах, сетевых хабах, коммуникационном и другом оборудовании, которое мы используем на работе, мы замечаем, что уже довольно сильно освоили эру повсеместных вычислений.

Помимо того, что процессоры вездесущи, почти все наши взаимодействия с ними происходят в сетях. Как программисту использовать преимущества повсеместного внедрения компьютеров и сетевых решений в гетерогенных устройствах и средах?

Технология Java поддерживает повсеместные сетевые вычисления

В статьях по истории Java говорится, что на ранних стадиях разработки язык был ориентирован на программирование устройств. Идея Java первоначально базировалась на использовании в нетрадиционных вычислительных устройствах; со временем она была перенесена на ПК и серверы. Малый размер кода, возможность пересылать объекты по сети, межплатформенная совместимость были разработаны для малых мобильных разнородных устройств. То, что эти свойства оказались очень полезны в сфере взаимодействующих в Сети больших компьютеров, можно считать большой удачей.

Технология Java уже сделала один виток, а теперь вновь программирование устройств на Java приобретает актуальность. Тема статьи касается различных API, инструментов и продуктов для программирования бытовой электроники, такой как персональные цифровые помощники (PDA), мобильные телефоны, пейджеры и другие спецвычислители. В этой статье мы постараемся раскрыть, как Java можно использовать в этих устройствах и какие преимущества это сулит для перспективных проектов.

Основные API Java для устройств и их цели

Sun и ее партнеры разрабатывают несколько API для использования в среди устройств на Java:

  • PersonalJava, реализации от различных производителей RTOS (операционных систем реального времени). Поддерживает функции GUI и сетевого подключения для бытовых устройств.
  • EmbeddedJava, для устройств с непостоянным или отсутствующим подключением к сети, части не имеющих GUI. Имеет свойство настраиваться на поддержку только тех классов и свойств виртуальных машины, которые необходимы для конкретного устройства.
  • JavaCard, содержащий реализацию iButton фирмы Dallas Semiconductor (популярная среда, Java готовая к распространению).
  • Java 2 Platform, Micro Edition (J2ME) и K Virtual Machine (KVM) для бытовых устройств являются последними достижениями. Предварительные версии демонстрировались на JavaOne в июне 1999 на примере мотороловского PageWriter 2000x, ручных Palm III и V, кассовых (POS) терминалов Bull, и мобильных телефонов нового поколения Matsushita/Panasonic и других производителей, пользующихся услугами i-mode NTT DoCoMo. Они поддерживают Jini для малых устройств, а также распределение вычислительной мощности между устройством и сервером, благодаря чему габариты устройств можно уменьшать.
  • Symbian, совместный проект Nokia, Ericsson, Motorola, и Matsushita/Panasonic, для поддержки Java в мобильных телефонах EPOC32 и операционных системах беспроводной связи.

Кроме того, несколько других компаний ведут независимые разработки Java для бытовой и встроенной техники. Среди таких разработок наиболее известны следующие:

 

  • Различные независимые Palm VMs, например, Ghost VM и WabaVM; Java conduit и связанные с ними технологии, самостоятельные разработки;
  • Kaffe JVM фирмы Transvirtual Technologies, совместимая со спецификацией PersonalJava 1.1.1
  • Статический компилятор GCJ фирмы Cygnus Solutions для разработки встроенных приложений.
  • Chai, Chai VM от Hewlett-Packard и сопутствующие инструменты
  • Проекты NewMonics по Java реального времени

Также появляются другие наборы прикладных API. Группы таких API называют профилями в терминологии Sun, они должны строиться на базовых исполняемых модулях Java, обеспечивая определенный уровень совместимости и межвзаимодействия для устройств одного класса, предназначенных для одного рынка или одной отрасли промышленности.

Идея профилей в настоящее время дорабатывается рабочими группами в сообществах разработчиков бытовых и встроенных устройств. Можно найти следующие профили:

  • Беспроводной профиль (мобильные телефоны и коммуникации), схожие с интеллектуальным телефоном Symbian и профилями устройств беспроводной передачи информации. Может включать JavaPhone API.
  • Профиль POS.
  • Профиль ручных PDA.
  • Автомобильный профиль (может включать Java для автомобильного API).
  • Профиль интерактивного телевидения (может содержать JavaTV API).
  • Профиль PersonalJava, перекомпоновка спецификаций PersonalJava для более ясного отличия от API на базе различных применений J2ME.

Профили до сих пор находятся в состоянии разработки, но большинство платформ и инструментов уже доступны в той или иной форме. В Resources в конце этой колонки приводится больше информации о платформах, профилях и других технологиях встроенного Java.

В следующей таблице показаны состояния основных бытовых и встроенных API Java и технологий на 23 июня 1999.

Технология Тип Спецификация API (версия) FAQ Ссылка на реализацию (версия) список рассылки по теме
PersonalJava Среда приложений (станет профилем в будущем) Да (1.1.1) Да Да (3.0, соответствует версии 1.1.1 API) Нет
JavaPhone API расширения (войдет в состав одного или нескольких) Да (0.91) Да Нет Нет
JavaTV API расширения (войдет в состав одного или нескольких) Да (0.90) Да Нет Нет
EmbeddedJava Среда приложений Да (1.1) Нет Да (на базе JDK 1.1.6) Нет
JavaCard Платформа Да (2.1) Да Да (ранний доступ) Нет
K Virtual Machine Исполняемая среда Да (1.0 в июне 1999) Нет (есть документация) Да (предварительная демонстрация для участников JavaOne) Да (подписка на сайте KVM)
Java 2 Platform, Micro Edition Платформа Java 2 Platform, для устройств Нет Нет Нет (кроме демо KVM на JavaOne) Нет (кроме списка KVM)

Отметим, что для составления таблицы использовалась публично распространяемая информация Sun и других компаний, лицензионные реализации и несогласованные источники не указывались. Большая часть из этой информации получена по ссылкам страницы Java компании Sun, домашних страниц других компаний и из публичных демонстраций на конференции разработчиков JavaOne в 1999 году.

За дополнительной информацией обратитесь к адресам в Ресурсах в конце этой статьи. В частности, много полезной информации содержит статья JavaOne Today по разработке устройств.

Следите за обзорами материалов на сайте J2ME, где в последующие месяцы, вероятно, появится много специфических и важных дополнений по Enterprise Edition (J2EE), Standard Edition (J2SE) и Micro Edition (J2ME).

Мы рассмотрим детали этих технологий в дальнейших статьях. В целом они предоставляют разработчикам много возможностей для программирования целевых устройств на Java.

Методика программирования устройств

Успех методики в колонке Media Programming приводит нас к мысли о составлении такой же методики здесь. Мы рассмотрим различные технологии программирования устройств на Java и предоставим как можно больше конкретных примеров, чтобы познакомить читателя с ними и использовать их самим. Мы также предоставим информацию по эмуляторам и другим инструментам разработчика, которая позволит читателю начать программировать устройства как можно раньше, иногда даже заблаговременно до появления реальных устройств. (В результате чтения информации колонки, стоимость разработки должна снизиться.) Автор настоятельно рекомендует изучить код, сопутствующий выпуску колонок.

Идеи следующих колонок составляют:

  • Программирование устройств Palm на Java. Она будет содержать информацию по программированию потокам на Java и компилированию кода Java в инструкции низкого уровня и интерпретированию кода Java на самих Palm. Мы обсудим также рабочие среды и SDK Sun и Palm, а также средства независимых разработчиков.
  • Учебник по программированию устройств, совместимых с PersonalJava. Мы изучим, как гарантировать запуск апплетов PersonalJava на устройствах Интернет телефонии, настольных системах и рабочих станциях. Мы изучим эмулятор PersonalJava, чтобы иметь возможность начать программирование сейчас же, даже если выбор совместимого с PersonalJava устройства еще не сделан.
  • Появление мобильных телефонов с возможностью выполнения кода Java и доступа в Интернет. Мы изучим протокол беспроводного доступа (WAP), беспроводной язык разметки (WML) и как Java позволяет соединить все в систему. Мы рассмотрим свободно распространяемый EPOC Java SDK от Symbian и средства разработки для WAP от Nokia и Ericsson.
  • Открытые исходные тексты и общественные источники в бытовой и встроенной технологии Java. Каковы альтернативы?
  • Jini для бытовых устройств. Что доступно сейчас и что появится в ближайшем будущем, сюда мы можем включить обсуждение проекты третьих сторон, занятых в сообществе Java. Кроме того мы обсудим рабочие требования Java для реализации технологии Jini и их отношение J2ME к ним.

Автор принимает предложения по составу рассматриваемых тем. Приветствуются любые идеи и комментарии. Автор надеется предоставить в этой колонке полезную информацию и осветить идеи, которые позволят разрабатывать сетевые приложения Java для использования в повсеместной вычислительной инфраструктуре.

Замечание о номенклатуре и соглашениях

В колонке Media Programming разработана удачная номенклатура. Поэтому мы сохраним здесь эту номенклатуру, добавив некоторые обновления.

В этой колонке мы разработаем ряд советов с упором на Java, затем на Windows и Linux, так как в этих средах находится сфера наших интересов.

Мы будем понимать термины бытовой и встроенные. Первые мы будем использовать для обозначения Java в малых устройствах, а последние — в устройствах, которые работают в рамках других систем (как сетевой чип в телефонных системах). Возможная путаница прояснится из контекста.

Будем придерживаться следующих принципов:

  • именовать методы в форме methodName().
  • давать листинги исходных кодов с номерами строк.
  • однообразно именовать примеры текстов. На верхушке иерархии будет com.billday.device, каждый вложенный класс поместим на уровень ниже этого. Например, весь код, относящийся к программированию Palm поместим в com.billday.device.palm.
  • генерировать архив JAR со всеми кодами и классами для текущей и предыдущей колонок. Архивы можно получить на веб сайте автора в файле billday.jar.
  • оформлять каждый пример как отдельное приложение или апплет.

Заключение

Тысячи участников JavaOne уже начали писать свой код на Java для своих устройств Palm. За несколько следующих месяцев мы рассмотрим рост внедрения Java в Palm, мобильники и другие устройства. Сегодня используются миллионы карманных компьютеров и партнеры Symbian планируют выпустить от 40 до 60 миллионов беспроводных телефонов с Java за следующие три года. Мораль: программирование устройств на Java стало реальностью уже сегодня, а в ближайшее время получит широкое распространение.

Об авторе

Bill Day — апологет технологии на Sun Microsystems и признанный лектор Association for Computing Machinery (ACM). Кроме колонки программирование устройств на Java, Bill ведет еженедельную колонку Q&A для рассылки новостей карьеры JavaWorld. Bill работал над тематическими статьями SunWorld, Gamasutra, и JavaSoft и часто высказывается на темы мультимедиа на Java и программирования бытовых устройств. Ресурсы

Источник: http://www.javaportal.ru/mobiljava/articles/programmingjava.html
Автор: Андрей Ковалев

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты