Sony Ericsson K750i — телефон времени отдельных Java-файлов и сборок под модель. Фото: Beamish4 · Оригинал и автор · CC BY-SA 4.0.
В каталоге игр было недостаточно нажать на красивую картинку. Сначала ищешь свою модель или разрешение экрана, потом смотришь на расширение: JAR или JAD. Загружаешь, ждёшь установки — и только после этого узнаёшь, удалось ли всё сделать правильно.
Так выглядело знакомство с Java-приложениями до привычных магазинов смартфонов. Пользователь участвовал в выборе сборки намного заметнее. Название игры могло быть тем же, а файл для чужого телефона — не подходить.

JAR — архив с программой и её ресурсами: например, изображениями и звуками. Внутри находились и сведения, нужные системе приложения. JAD — небольшой текстовый дескриптор, который описывал сборку и мог указывать адрес её JAR-файла.
| Файл | Что в нём было | Почему это важно |
|---|---|---|
| JAR | Код, ресурсы и внутренние сведения о приложении | Основная часть устанавливаемой программы |
| JAD | Описание, размер, адрес JAR и другие атрибуты | Мог участвовать в загрузке и проверке установки |
Поэтому JAD не заменял всю игру. Если телефон получал только описание, ему ещё требовалась основная часть. В некоторых способах установки можно было начать с JAR, в других использовался JAD. Это зависело от платформы и её версии.
В документации MIDP 1.0 и MIDP 2.0 способы загрузки различались. Отсюда знакомая ситуация: у одного человека файл ставится прямо из папки, у другого требуется другой порядок. Одинаковое расширение не гарантировало одинаковое поведение аппаратов.
Размеры 128 × 160, 176 × 220, 240 × 320 выглядели почти как название класса телефона. Игры часто готовили под конкретное поле: располагали кнопочные подсказки, рисовали фон, рассчитывали размер меню.


Неподходящий размер мог дать маленькую картинку, обрезанный интерфейс или неудобное размещение элементов. Но разрешение не было единственным условием. Имели значение поддерживаемые возможности Java, доступная память и особенности программной среды производителя.
Поэтому совет «возьми любую версию 176 × 220» не решал всё. Две модели с похожими экранами могли поддерживать разные функции. Иногда сборка для одной марки запускалась на другой, иногда нет — универсального результата не существовало.
Приложению могли понадобиться сеть, файлы или другие возможности телефона. Перед действием система показывала запрос. Игра, которой достаточно собственных ресурсов, и мессенджер с постоянным подключением имели разные потребности.
Такие вопросы были частью устройства мобильной Java. Пользователь иногда раздражался из-за повторного запроса, но он сообщал важную вещь: программа собирается выйти за пределы собственных данных. Подписи и доверие к сборке влияли на доступные разрешения.
При этом расширение JAR не подтверждало безопасность. В каталогах соседствовали игры, полезные программы и изменённые файлы. Обещание красивой заставки ничего не говорило о происхождении приложения или возможном обращении к платным функциям.
Приложение могли загрузить через мобильный браузер, передать с компьютера или получить от другого телефона, если конкретная модель позволяла такую установку. Во всех вариантах важно было не только доставить файл, но и запустить предусмотренный аппаратом процесс.

Различия объясняются руководствами устройств. Например, смартфон Nokia мог принимать установочные файлы одним способом, а обычный телефон другой марки — иначе организовывать загрузку Java. Перенесённый в папку файл не обязательно сразу появлялся среди игр.
Поэтому исторический обмен звучал как короткая техническая консультация: какая модель, какой экран, чем передавать? Без этих уточнений знакомое «у меня работает» ещё не помогало другому владельцу.
Сообщение об ошибке могло появиться сразу, во время установки или при первом запуске. Причины разные: повреждённый файл, неподдерживаемая версия Java, нехватка памяти, неверное описание сборки, ограничения устройства.
| Что происходило | Что это могло означать |
|---|---|
| Файл не устанавливается | Проблема доставки, описания или совместимости |
| Программа запускается, но картинка неудобна | Сборка не рассчитана на этот экран |
| Есть ошибки во время работы | Не хватает ресурсов или отсутствует нужная возможность |
| Появляются запросы доступа | Приложение использует защищённые возможности устройства |
Важное различие — память для хранения и память для работы. То, что файл помещался среди остальных, не означало, что телефону хватит ресурсов запустить программу. Именно поэтому небольшая сборка иногда оказывалась удачнее более красивой.
Выбор подходящей версии был маленькой частью приключения. Сначала удаётся доставить файл, затем появляется название в меню, потом игра наконец открывает свой первый экран. В этот момент несколько непонятных сокращений превращались в совершенно понятный результат: получилось.
Такая установка делала модель телефона важной частью разговора. Люди обменивались не только играми, но и опытом: какая сборка подошла, где нашлась, почему прежняя не запускалась.