В основе j2me лежит несколько стандартов: CLDC (1.0 или 1.1) и MIDP (1.0 или 2.0). Стандарты эти обратно совместимы, т.е. если устройство поддерживает MIDP 2.0, оно будет корректно (должно, но не обязано
) работать с MIDP 1.0. Производители мобильных устройств выпустили расширения для стандартов MIDP-1, в которых содержатся специфические для данного устройства возможности или оптимизированные способы работы с графикой. Например, это могут быть классы для работы со звуком, виброй, подсветкой, динамическим светом или файловой системой. Надо заметить, что с поддержкой стандарта MIDP-2 производители, например Siemens, пометили такие специфические классы как "нерекомендуемые", так что это должно положительно сказаться на совместимости.
Адаптация к запуску, по сути, ряд операций, которые позволяют запустить платформо-зависимый мидлет на другом устройстве. Характерная ошибка, которая возникает при попытке запуска платформо-зависимого мидлета: "Midlet initialization failed: java.lang.NoClassDefFoundError: com/samsung/util/AudioClip". В данном случае, как видно из сообщения об ошибке, мы имеем дело с мидлетом, который был написан для платформы Samsung. Что можно предпринять в таком случае? Можно воспользоваться тем, что Виртуальная Ява машина при поиске классов использует относительный путь, принимая за точку отсчета сам мидлет - ведь API так же находится в jar архиве! Т.е. проще говоря мы попробуем добавить недостающие классы в подопытный мидлет. Мидлет, естественно, продолжит вызывать специфические классы, но они будут изолироваться. После такой процедуры, как правило, программы запускаются и работают на другой платформе, но с определенными ограничениями или глюками: управление может оказаться частично не доступным (управляющие коды джойстика и софт-клавиш различаются), не будет звука, вибры, подсветки (если они реализованы через специфические апи), ошибки отрисовки графики из-за разницы в реализации графических функций. И самое важное: если размеры экранов не совпадают, то таким образом вы НИКАК не добьетесь перемасштабирования (это должны были сделать авторы мидлета)! Т.е. этот способ подходит для случая когда:
надо посмотреть что это за мидлет
экран вашего устройства совпадает или очень близок по размерам к экрану исходной платформы + вы готовы примириться с возможными проблемами в управлении (охота пуще неволи!)