« Поставить закладку » « Сделать стартовой »

« Форумы » « Блоги » « Статьи » « Новости » « Файлы » « Realcoding IRC » « Site map » « Поиск »


Главная Главная
Анонсы Анонсы
Форумы Форумы
Каталог Каталог
Поиск Поиск
Опросы Опросы
Книжный магазин Книжный магазин
Реклама на сайте
Публикации Публикации
Партнеры Партнеры
Карта Карта сайта
Рассылки Рассылки
RSS экспорт
Настройки Настройки
О нас пишут О нас пишут
Контакты Контакты
Гостевая книга Гостевая книга



ПнВтСрЧтПтСбВс
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
    Популярное
Вывод в поле диалогового окна

Программирование сокетов

Элементы и Атрибуты: Моделирование Реляционных Данных Средствами XML. Часть 1

Функция SetVoiceSound

Функция AccessResource

Глава 13. Программирование в Access 2002.

HotKeys - горячии клавишы

Определяемое Преобразование Типа

Функция TextOut

Функция CreateFontIndirect




    Архив файлов



    Сообщества

    Документация

    Кто на сайте
Вы не зарегистрированы.
Имя:

Пароль:

Запомнить

Регистрация позволит Вам пользоваться дополнительными сервисами.
Сейчас на сайте:
Гостей: 268
Пользователей: 0

Статьи:: Интернет технологии :: Java2ME :: Думайте о малом с J2ME. Платформа Java предлагает новые возможности для малых сетевых устройств



отправить ссылку другу версия для печати  Обсудить на форуме

Думайте о малом с J2ME. Платформа Java предлагает новые возможности для малых сетевых устройств



Soma Ghost (sghost@entigo.com)
Главный разработчик приложений, Entigo

Java 2 Platform, Micro Edition (J2ME) предлагает прекрасные средства для разработчиков, переносящих сетевое и платформно-независимое мировоззрение на ограниченные по памяти и мощности процессора устройства. Soma Ghost объясняет основы мира J2ME, показывая вам строительные блоки платформы и демонстрируя пример приложения.

Персональные и интеллектуальные устройства сегодня стали необходимостью нашей жизни. Эти устройства, среди которых сотовые телефоны, двунаправленные пейджеры, смарт-карты, персональные компьютерные записные книжки и палмтопы, имеют тенденцию быть специализированными, ограниченными по ресурсам сетевыми устройствами, а не теми настольными компьютерами универсального назначения, которые мы знали до настоящего времени. Специально для этого огромного потребительского сектора Java 2 Platform, Micro Edition (J2ME) предоставляет изобилие передовых технологий Java.

Развитие Java VM: От настольных компьютеров до микроустройств

Микроустройства, для которых предназначена J2ME, имеют 16-ти или 32-х разрядные микропроцессоры с минимальным полным объемом памяти равным примерно 128 Кб. Они соответствуют конфигурации Connected Limited Device Configuration (CLDC), сохраняя такие традиции Java, как переносимость кода в любое время и в любое место, гибкость размещения, безопасную работу в сети и устойчивость кода. Необходимой составляющей J2ME CDLC является облегченная JVM, называемая K Virtual Machine (KVM). KVM разработана для ограниченных по ресурсам сетевых устройств, имеющих небольшую память.

Другая конфигурация J2ME - Connected Device Configuration (CDC) предназначена для развитых потребительских электронных и встраиваемых устройств, таких как интеллектуальные коммуникаторы, современные "интеллектуальные" пейджеры, персональные цифровые помощники (PDA) и интерактивные цифровые телевизионные приставки. Обычно эти устройства работают на 32-х разрядном микропроцессоре/микроконтроллере и имеют более 2 Мб общей памяти для хранения виртуальной машины и библиотек. CDC содержит C Virtual Machine (CVM). В этой статье мы рассмотрим архитектуры CLDC и KVM. Дополнительная информация о CDC и CVM находится в разделе Ресурсы, расположенном ниже.

KVM адаптирован под особенности небольших устройств следующим образом:

Размеры VM и библиотек классов уменьшены до объема в 50-80 Кб объектного кода

  • Объем используемой памяти уменьшен до десятков килобайт

  • Производительность оптимизирована для устройств на 16-ти и 32-х разрядных процессорах

  • Архитектура является переносимой, с небольшим количеством зависящего от аппаратуры и/или от платформы кода

  • Многопоточность и сборка мусора является независимой от системы

  • Компоненты виртуальной машины могут быть сконфигурированы для конкретных устройств, увеличивая таким образом гибкость

Архитектура и конфигурация J2ME

Архитектура J2ME основана на семействах и категориях устройств. Категория определяет конкретный тип устройства; сотовые телефоны, простые пейджеры и персональные организаторы являются разными категориями. Семейство устройств образуется группой категорий, имеющих сходные требования к объему памяти а мощности процессора. Все вместе сотовые телефоны, простые пейджеры и простые персональные организаторы образуют одно семейство малых отображающих устройств.

На рисунке 1 показана взаимосвязь между семействами и категориями устройств в контексте J2ME.

Рисунок 1. Семейства и категории устройств



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

На рисунке 2 показана архитектура J2ME.

Рисунок 2. Архитектура J2ME



  • Уровень Java Virtual Machine: Этот уровень представляет собой реализацию виртуальной машины Java, которая адаптирована под операционную систему конкретного устройства и поддерживает конкретную конфигурацию J2ME.

  • Уровень конфигурации: Уровень конфигурации определяет минимальный набор функций JVM и библиотек классов Java, доступных для определенной категории устройств. В некоторой степени конфигурация определяет общие свойства и особенности платформы Java и библиотек, которые в предположении разработчиков должны быть доступны для всех устройств, принадлежащих конкретной категории. Этот уровень менее видим для пользователей, но является очень важным для разработчиков профилей.

  • Уровень профиля: Уровень профиля определяет минимальный набор API, доступный для конкретного семейства устройств. Профили создаются для конкретной конфигурации. Приложения создаются для конкретного профиля и являются, таким образом, переносимыми на любое устройство, поддерживающее этот профиль. Устройство может поддерживать несколько профилей. Этот уровень является наиболее видимым для пользователей и поставщиков приложений.

  • Уровень MIDP: Уровень Mobile Information Device Profile (MIDP) представляет собой набор Java API, предназначенный для решения таких вопросов как пользовательский интерфейс, персистентное хранение и сетевые функции.

Уровни Java Virtual Machine, конфигурации и профиля вместе образуют Connected Limited Device Configuration (CDLC). Профиль MID и CDLC обеспечивают стандартную среду времени исполнения, позволяющую новым приложениям и службам динамически размещаться на пользовательских устройствах.

Программирование J2ME при помощи MIDP API: Строительные блоки

Комбинация CLDC и MIDP обеспечивает законченную среду для создания приложений для сотовых телефонов и простых двунаправленных пейджеров.

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

Все мидлеты расширяют класс MIDlet - интерфейс между средой времени исполнения (менеджер приложений) и кодом мидлет-приложения. Класс MIDlet обеспечивает API для запуска, остановки, перезапуска и завершения мидлет-приложения.

Управляющее приложением программное обеспечение может управлять активностью нескольких мидлетов в среде времени исполнения. Кроме того, мидлет может сам вызывать некоторые изменения состояния и информировать управляющее приложением программное обеспечение об этих изменениях.

Полный набор классов MIDP API может быть разделен на две категории:

  • MIDP API для пользовательского интерфейса: Эти API разработаны так, что взаимодействие с пользователем основывается на последовательности экранов, каждый из которых предоставляет пользователю определенное количество информации. Команды предоставляются пользователю поэкранно. API дает возможность приложению определять, какой экран отображать следующим, какие вычисления выполнять и какие запросы передавать сетевой службе.

  • MIDP API для управления базой данных: Эти API организуют и управляют базой данных устройства, которая содержит информацию, остающуюся персистентной между многочисленными вызовами мидлета.

CLDC API используется для управления строками, объектами и целыми числами. Также предоставляется подмножество Java 2 API для выполнения операций ввода/вывода и сетевых коммуникаций.

На рисунке 3 показаны строительные блоки J2ME.

Рисунок 3. Строительные блоки J2ME



Взаимосвязь между Java API Standard Edition и Java API Micro Edition показана на рисунке 4.

Рисунок 4. Взаимосвязь между J2ME API и J2SE API



Обработка событий в J2ME

Обработка событий в J2ME в отличие от обработки событий в версии платформы Java для настольных компьютеров основывается на последовательности экранов. Каждый экран содержит определенное количество данных.

Команды предоставляются пользователю поэкранно. Объект Command инкапсулирует название и информацию, относящуюся к семантике действия. Объект Command используется главным образом для предоставления пользователю набора возможных действий. Дальнейшее поведение определяется в объекте CommandListener, связанном с экраном.

Каждый объект Command содержит три порции информации: метку, тип и приоритет. Метка используется для визуального представления команды; тип и приоритет используются системой для определения того, как объект Command отображается на конкретный пользовательский интерфейс.

На рисунке 5 показан механизм обработки событий в J2ME.

Рисунок 5. Обработка событий в J2ME



Разработка пользовательских интерфейсов

Хотя MIDP API поддерживает ограниченный профиль, он предоставляет полный набор элементов пользовательского интерфейса. Ниже перечислены основные из них:

  • Alert действует как экран, информирующий пользователя об исключительной ситуации или об ошибке.

  • Choice реализует набор из предопределенного числа возможностей выбора действий.

  • ChoiceGroup предоставляет группу связанных возможностей выбора действий.

  • Form выступает как контейнер для других элементов пользовательского интерфейса.

  • List предоставляет список действий.

  • StringItem действует как строка, предназначенная только для отображения.

  • TextBox представляет собой экран, позволяющий пользователю вводить и редактировать текст.

  • TextField позволяет пользователю вводить и редактировать текст. В Form можно разместить несколько TextField.

  • DateField представляет собой редактируемый компонент для представления информации о дате и времени. DateField может быть расположен в Form.

  • Ticker работает как прокручиваемый текст.

Полный список элементов пользовательского интерфейса доступен в документации по MIDP API, которая прилагается к J2ME Wireless Toolkit (для дополнительной информации см. раздел Ресурсы, расположенный ниже).

Управление базой данных устройства

MIDP предоставляет набор классов и интерфейсов для организации и управления базой данных устройства: RecordStore, RecordComparator и RecordFilter. RecordStore состоит из набора записей, остающихся персистентными между различными вызовами мидлета. Сравнение записей в RecordStore или извлечение набора записей из RecordStore обеспечивается интерфейсами RecordComparator и RecordFilter.

Разработка J2ME-приложений

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

Пример приложения: Телефонный календарь

Одной из замечательных возможностей в J2ME является возможность манипулирования датой в ограниченной по ресурсам среде. Элемент пользовательского интерфейса DateField, предлагаемый J2ME, представляет собой редактируемый компонент для представления календарной информации (то есть, даты и времени). В этом разделе мы разработаем J2ME-приложение, отображающее прокручиваемый календарь на сотовом телефоне, используя функции DateField и Date.

Приложение - телефонный календарь

// Импорт классов API
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.*;
//Первый мидлет с простым текстом и небольшим числом команд.
public class PhoneCalendar extends MIDlet
implements CommandListener, ItemStateListener {
//Команды
private Command exitCommand;
//Дисплей для этого мидлета
private Display display;
// Отображение элементов Form и DateField
Form displayForm;
DateField date;
public PhoneCalendar() {
display = Display.getDisplay(this);
exitCommand = new Command("Exit", Command.SCREEN, 1);
date = new DateField("Select to date", DateField.DATE);
}
// Запуск мидлета путем создания Form и
// связывания команды выхода и перехватчика.
public void startApp() {
displayForm = new Form("Quick Calendar");
displayForm.append(date);
displayForm.addCommand(exitCommand);
displayForm.setCommandListener(this);
displayForm.setItemStateListener(this);
display.setCurrent(displayForm);
}
public void itemStateChanged(Item item)
{
// Получить значения из измененного элемента
}
// Пауза является пустой операцией при отсутствии активности
// или при закрытой базе записей.
public void pauseApp() { }
// Операция Destroy должна очистить все, что не очистилось
// сборщиком мусора.
public void destroyApp (boolean unconditional) { }
// Ответ на команды. Здесь мы реализуем только
// команду выхода. В этой команде мы делаем очистку и
// информируем, что мидлет уничтожен.
public void commandAction (
Command c, Displayable s) {
if (c == exitCommand) {
destroyApp(false);
notifyDestroyed();
}
}
}

Мидлет PhoneCalendar, определенный выше, расширяет ItemListener и CommandListener. Это дает возможность мидлету проследить изменение элемента на экране и среагировать на команду пользователя. Пользовательский интерфейс начинается с определения экрана телефона и присоединения к нему объекта Form. Form выступает как контейнер и может содержать много элементов пользовательского интерфейса. Функция commandAction() работает как обработчик команд в J2ME и определяет действия, которые необходимо выполнить для конкретной команды.

Размещение J2ME

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

Размещение в среде эмулятора

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

  1. Установите J2ME Wireless Toolkit (см. раздел Ресурсы). Программа установки подскажет вам все необходимые действия. Выберите режим standalone для запуска этих примеров. Выберите режим integrated, если вы хотите работать с IDE.

  2. Создайте новый проект, используя пользовательский интерфейс KToolbar. Укажите имя класса.

  3. Поместите класс, указанный на шаге 2, в каталог C:[J2ME Installation directory]apps[Project Name]src.

  4. Откомпилируйте проект.

  5. Выберите DefaultGrayPhone в качестве устройства по умолчанию в J2ME Wireless Toolkit->Default Device Selection.

  6. Запустите проект.

Набор программ также позволяет предоставляет возможность спакетировать проект в jar-файл и jad-файл. Двойной щелчок на jad-файле разместит приложение, указанное в jar-файле.

Размещение из командной строки

Доступно также большое количество ключей командной строки.

  1. Создайте файл классов:

    C:J2MEappsAppointmentPhoneCalendar>
    javac _ tmpclasses _ootclasspath
    C:J2MElibmidpapi.zip -classpath tmpclasses;
    classes src*.java

  2. Создайте файл декларации - manifest.mf:

    MIDlet-1: AppointmentPhoneCalendar,
    AppointmentPhoneCalendar.png,
    AppointmentPhoneCalendar
    MIDlet-Name: AppointmentPhone Calendar MIDlet-Vendor: Sun Microsystems
    MIDlet-Version: 1.0
    MicroEdition-Configuration: CLDC-1.0
    MicroEdition-Profile: MIDP-1.0

  3. Создайте jar-файл:

    C:J2MEappsAppointmentPhoneCalendar>jar cfm .bin
    AppointmentPhoneCalendar.jar
    manifest.mf -C classes . _ res .

  4. Создайте jad-файл:

    MIDlet-1: AppointmentPhoneCalendar,
    AppointmentPhoneCalendar.png,
    AppointmentPhoneCalendar
    MIDlet-Jar-Size: 4490
    MIDlet-Jar-URL:
    F:J2MEappsAppointmentPhoneCalendarbin
    AppointmentPhoneCalendar.jar
    MIDlet-Name: AppointmentPhoneCalendar
    MIDlet-Vendor: Sun Microsystems
    MIDlet-Version: 1.0

  5. Запустите jad-файл:

    C:J2MEbin> emulator -Xdescriptor:
    C:J2MEappsAppointmentPhoneCalendar
    binAppointmentPhoneCalendar.jad

Заключение

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

Ресурсы

  • Примите участие в дискуссионном форуме по этой статье, нажав ссылку Discuss.

  • Оставайтесь на связи с миром беспроводных технологий в зоне developerWorks Wireless.

  • Зона developerWorks Java technology держит вас в курсе последних событий в области Java.

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

  • Проверяйте последние разработки на сайте IBM Pervasive Computing.

  • Стройте Java-приложения при помощи Visual Age for Java от IBM.

Некоторая документация от Sun:

Об авторе

Специалист по компьютерам Soma Ghosh за последние шесть лет разработала широкий спектр Java-приложений в области электронной коммерции и сетевых вычислений. Она считает, что ближайшим будущим данной отрасли является беспроводная коммерция, и недавно перешла от моделей настольных компьютеров к беспроводным технологиям. Она в настоящее время является старшим разработчиком приложений в Entigo - пионере в B2B-продуктах и решениях в области электронной коммерции. Адрес для контактов: sghost@entigo.com.




Рубрика: Java2ME




Подгрузка через AJAX HTML-кода, содержащег....

AJAX

При разработке CMS S.Builder наша команда активно использовала AJAX. Теперь вот решили поделиться накопленным опытом. Начнем с этого хабратопика. Не буду здесь затрагивать различные фреймворки и библиотеки. Свой код всегда роднее. Для работы с AJAX-ом в S.Builder написана библиотека sbAJAX. Можете качать и пользоваться :). В этом файле есть функция sbEvalJS. Для тех, кто не знает, объясню. При подгрузке через AJAX и вставке на страницу HTML-кода, содержащего JavaScript, JavaScript выполняться не будет или полезут баги. Эта функция как раз решает поставленную задачу.


Подробнее... | Рубрика: AJAX | Добавлено: 19.11.2008

Обзор нового релиза самой мощной Ajax библ....

AJAX

Хотя наш обзор немного запоздал, оригинальный Dojo 1.2 вышел в релизной версии ещё 6-го октября, но сейчас мы наверстаем упущенное. И так, Dojo Toolkit — это самая мощная и гибкая ajax-библиотека из всех, что есть на рынке, она активно развивается и имеет большое комьюнити. Кстати, это самое комьюнити, совместно с компанией Sitepen, имеет ещё несколько проектов, среди которых и Cometd и некоторые другие, не менее интересные, о которых мы скоро вам расскажем. Сегодня же все внимание на флагманский продукт — Dojo 1.2.


Подробнее... | Рубрика: AJAX | Добавлено: 19.11.2008

Firebug 1.3 и 1.4 alpha — что нового и инт....

Вебмастеру

Если вы профессиональный веб-разработчик и постоянно имеете дело с разработкой и отладкой сложных AJAX приложений, то наверняка знаете и используете Firebug — плагин для браузера Firefox, предназначенный для отладки и исследования веб-приложений. Текущая его версия, 1.2х достаточно стабильная и функциональна, чтобы помочь в 99% проблем, которые могут возникнуть при разработке. Но и этот инструмент не лишён если не недостатков, то некоторых фич, которые могли бы облегчить работу. И даже идеальный инструмент можно сделать ещё более идеальным, как бы это не звучало.


Подробнее... | Рубрика: Вебмастеру | Добавлено: 19.11.2008

Остальные статьи:

Релиз Microsoft Silverlight 2.0. Что новог...
XML документация в C#
Курсоры в MySQL 5
Microsoft опубликовала подробности о сесси...
Microsoft делится подробностями о том, что...
Тестируем новый javascript от нового брауз...
MySQL Query Cache
Использование провайдеров компиляции в As...
Чего мы ждем от C# 4.0
Delphi 2009 и C++Builder 2009
Джоэл Спольски и Джеф Этвуд запустили новы...
Поиск кода Google /* что нового? */
10 jQuery скриптов для улучшения интерфейс...
Генераторы отчетов FastReport 4 и QuickRep...
День программиста — набор стерeотипов
Индусские програмисты
Вышел Django 1.0
Портативная версия Google Chrome Portable
Исходные коды .Net Frameword 3.5 SP1 для о...
Пишем правильный online WYSIWYG-редактор


Цитата дня (все,добавить):

Портал фрилансеров

работа на дому


    Рубрикатор

Программирование

C/С++
Обучение
Windows API
XAML
Моделирование
Паттерны
Visual Basic 7 .NET
WxWidgets
Функции WinApi
Функции С++
Разработка под Mac OS
Eiffel
Visual Studio 2008
UI дизайн
Алгоритмы
Конкурсные статьи
Turbo Pascal
Visual Studio
CASE-средства
Visual Studio 2005
Без VCL
Delphi
Тех. документация
Тестирование
Software Testing
ООП
TCP/IP
Google Android
Windows Installer
.NET Framework
Драйвера
C# C Sharp
Справка
Проектирование
Информ. системы
Visual Basic
Assembler
Оптимизация кода
Gtk+
Компоненты
Реинжиниринг
Управление проектами
Extreeme programming
Lotus Notes
Алгебраическое проектирование


Интернет технологии

PHP
Perl
ASP
WAP
Cookies
SSI
CGI
Web Servers
VB Script
DNS
CSS
XML
Html
Java Script
Java2ME
Firewall
Flash
.htaccess
Apache
VRML
Протоколы
Поисковые системы
Технология JAVA
Учебник по PHP
Учебник по JavaScript
Учебник по XML
Java Q&A
AJAX
DHTML
XHTML
Dreamweaver
Web 2.0
Python
Вебмастеру
Cisco
Ruby on Rails
Silverlight

Базы данных

Access
InterBase
MySQL
Oracle
ADO .NET
Основы SQL
Учебник по Access 2002
MS
Microsoft FoxPro
Доступ к данным
XML в MS SQL Server 2000
ODBC и MyODBC
Обучение
Caché
DB2
PostgresSQL
Sybase
Теория
Хранилища данных
Безопасность
Реляционные данные
MySQL и mSQL

Остальное:

Разное
Обзоры книг
Безопасность
Графика и дизайн
Юмор
Linux
Фракталы
Microsoft Axapta
Многоядерность
Сети
Microsoft Office
Работа
MS-DOS
Криптография
Графика и игроделание
Новости SDK
Системы защиты
Учебник по AutoCad
CVS
Windows XP
Windows Server 2003
Windows Vista
Windows 7
Мероприятия