Логин:   Пароль:






Новости
Рассылки
Форум
Поиск


Java
- Апплеты
- Вопрос-ответ
- Классы
- Примеры
- Руководства
- Статьи
- IDE
- Словарь терминов
- Скачать

Мобильная Java
- Игры
- Примеры
- Статьи
- WAP, WML и пр.

JavaScript
- Вопрос-ответ
- Примеры
- Статьи

Веб-мастеринг
- HTML
- CSS
- SSI

Разминка для ума
Проекты
Книги
Ссылки
Программы
Юмор :)




Rambler's Top100
Rambler's Top100

Мобильная Java: СтатьиПрограммирование устройств на Java

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

Билл Дэй

Ускорение Java для малых устройств.

Обзор

Компьютеры повсюду. Возрастающие возможности обработки встраиваются в устройства, размеры которых продолжают снижаться, характеристики компьютеров смещаются в сторону устройств меньших физических размеров и габаритов. Статья Билла открывает колонку Программирование устройств на 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 и программирования бытовых устройств. Ресурсы
  • Bill's Media Programming articles are archived in the JavaWorld Topical Index:
    http://www.javaworld.com/javaworld/topicalindex/jw-ti-media.html
  • Ubiquitous computing describes the third era of computing. Learn why the father of ubiquitous computing, Mark Weiser, calls ubiquitous computing the era of calm technology:
    http://www.ubiq.com/hypertext/weiser/UbiHome.html
  • "Java device developments at the 1999 JavaOne Developer Conference," Bill Day (JavaOne Today, June 1999). More information on the device development demos and announcements from JavaOne 1999. The article contains specific information on the KVM and its demonstration on Palm handhelds, Motorola two-way pagers, and NTT DoCoMo i-mode capable mobile phones, including photos of the devices:
    http://www.javaworld.com/javaone99/j1-99-j2me.html
  • Ziff-Davis's assessment of J2ME, KVM, HP's Chai, and related JavaOne consumer and embedded technology announcements:
    http://www.zdnet.com/sr/stories/news/0,4538,2276349,00.html
  • The main Sun Java site provides links to more information on PersonalJava, EmbeddedJava, JavaCard, J2ME, and the KVM:
    http://java.sun.com/
  • The Spotless System is a KVM predecessor, an experimental Java system for Palm Connected Organizers developed by SunLabs. The Spotless site contains some interesting technical reports and related links:
    http://www.sunlabs.com/research/spotless/
  • Symbian's EPOC World developer site provides more information on EPOC Release 5's Java implementation. It includes links to the EPOC Java SDK:
    http://developer.epocworld.com/
  • Sean McDermid makes the Ghost VM freely available from his University of Utah site. The Ghost Machine separates some processing functionality from the Palm-hosted client VM into a desktop-hosted server VM, akin to the model espoused as a part of the new J2ME:
    http://www.cs.utah.edu/~mcdirmid/ghost/
  • Learn more about WabaVM, Wabasoft's Palm and WinCE VM environment. Site includes information on how to install and develop for WabaVM:
    http://www.wabasoft.com/
  • Transvirtual Technologies makes its PersonalJava 1.1.1-compliant Kaffe JVM available on a number of CPU and OS platforms. Open source implementation available for desktop computers:
    http://www.transvirtual.com/products/index.html
  • Read Salon's discussion of the consumer and embedded Java marketplace and Transvirtual's place within it:
    http://www.salonmagazine.com/21st/feature/1999/01/05feature.html
  • Cygnus Solutions is developing a free software toolkit for compiling Java code into native code linked against a libgcj library. Part of the toolkit is GCJ, a Java front-end compiler that works with various GNU back-end compilers to enable Java-to-native compilation:
    http://sourceware.cygnus.com/java/
  • Hewlett-Packard's embedded software site provides information on the Chai VM and its new ChaiFreezeDry bytecode compression technology:
    http://www.hp.com/emso/
  • NewMonics was an early entrant to the realtime Java arena. It is helping to lead the J Consortium, a group working on realtime Java somewhat in opposition to the Sun-supported realtime experts group (which is itself working within the Java Community Process documented on Sun's Web site). Time will tell which realtime Java standard will succeed:
    http://www.newmonics.com/
  • Download the complete Device and Media Programming code archive from the Resources section of Bill's Web site. Also contains links to previous columns and related materials:
    http://www.billday.com/Work/index.html#Column
  • Watch for the new Device Programming FAQ for answers to your nagging questions. Not in the FAQ? E-mail Bill your questions:
    http://www.billday.com/Work/devicefaq.txt

Reprinted with permission from the July 1999 edition of JavaWorld magazine. Copyright © ITworld.com, Inc., an IDG Communications company.
View the original article at: http://www.javaworld.com/jw-07-1999/jw-07-device.html


Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/books/show2b.php on line 11

Warning: mysql_db_query() [function.mysql-db-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/books/show2b.php on line 19

Warning: mysql_db_query() [function.mysql-db-query]: A link to the server could not be established in /pub/home/javaport/javaportal/books/show2b.php on line 19

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /pub/home/javaport/javaportal/books/show2b.php on line 30
Узнай о чем ты на самом деле сейчас думаешь тут.


[an error occurred while processing this directive]



Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/news/worldnews.php on line 91

Warning: mysql_db_query() [function.mysql-db-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/news/worldnews.php on line 93

Warning: mysql_db_query() [function.mysql-db-query]: A link to the server could not be established in /pub/home/javaport/javaportal/news/worldnews.php on line 93

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /pub/home/javaport/javaportal/news/worldnews.php on line 95