Тяжкие роды джавняных мидлет
АрхивЮбилейная — двухсотая! — «Голубятня» отмечена невероятными открытиями и софтверными мучениями.
Юбилейная — двухсотая! — «Голубятня» отмечена невероятными открытиями и софтверными мучениями.
Начнем с открытий. В детстве, до позднепубертатного периода, я голыми руками ловил ящериц, ужей, жаб, головастиков, тритонов, раков, богомолов, кузнечиков, сверчков, уховерток, медведок, пчел, ос, шершней, майских жуков, жуков-рогачей и жуков-носорогов (кстати, недавно узнал, что жуки-носороги — это, типа, женщины жуков-рогачей: с ума сойти можно!). Короче, ловил все, что шевелится, и наивно полагал, что у фауны секретов больше не осталось. Полагал, пока три дня назад не повстречал… ЭТО! Мерзопакостность невиданной доселе зверюги столь запредельна, что, не полагаясь на слова, прилагаю картинку (фото 1). Длиной сантиметров 12–13, толщиной с палец, она не ползла, а судорожно корчилась, как на адском огне. Ладно бы еще в саду и в полдень, так ведь в полночь и на бревенчатой стене моего морского дома. И не снаружи, а ВНУТРИ! Пока соображал, за чем бежать — топором или фотоаппаратом, гада уползла в щель. Узнал из Интернета, что ядовитая чешуйчатая сколопендра (так зовут эту гаду) повсеместно распространена в Крыму, на юге Украины и Молдавии. Типа — метафора политических перемен нового времени. А шо: в годы советского детства сколопендры не ползали по стенам (и вообще нигде не ползали). А тут еще местный телеведущий голосом Левитана («Братья и сестры!») простращал в экстренном выпуске новостей: в Одесской области четыре человека умерли и двадцать лежат в больнице в тяжелом состоянии, укушенные пауками-каракуртами, которые тоже взялись непонятно откуда. Так что точняк: казни египетские!
Теперь о мучениях. Не тех, что в смысле — на мельницу Мазоха, а навроде мук родовых, после которых наступает блаженство. Дело обстояло так. У дорогих моему сердцу вебмань есть сервис «Телепат». Система «Телепат» позволяет управлять кошельками Web Money по телефону. Тремя способами: по обычному телефону без тонового набора (скажем, из уличного автомата) с помощью голосового меню, по телефону с тональным набором и по мобильному телефону, поддерживающему SMS и Java-приложения. Поскольку я человек простой, меня интересовал только последний вариант, но вот нескладуха: телефон мой Ericsson R520 с джавой не дружит. Ваще. По гамбургскому счету, это единственный недостаток R520: Bluetooth есть, GPRS есть, и цена меньше 90 долларов. Что касается нечеловечески жуткой внешности этого мобильника, есть замечательный способ прикрыть его рожу газеткой — не вытаскивать из сумки никогда и нигде! Как? Легко! Поиск в записной книжке и набор номера производится в наладоннике, а разговаривать удобно через Bluetooth-гарнитуру. Во всех остальных случаях (забор почты и шастанье по Интернету) R520 используется в качестве модема и извлекать его на свет божий подавно нет никакой нужды.
Конечно, давно хотелось подключиться к «Телепату», но менять телефон только из-за отсутствия поддержки джавы — ни в жисть! Как водится, выход эта самая жисть и подсказала: пролил стакан чая на «Эрика», после чего «Эрик» сдох. Даже представить себе не мог, с какой легкостью загинаются мобильные телефоны от малейшего контакта с жидкостью: в первые секунды сгорает батарея, во вторые — коротятся контакты на цифровых клавишах. Пока щелкаешь забралом, соображая, что делать, сгорают и основные микросхемы.
В качестве эпитафии нашел в Интернете подробную инструкцию по работе с мобильными утопленниками. Если кому интересно: единственный шанс выжить — молниеносно отключить батарею. Правда, и это помогает в основном на М-серии Siemens с прорезиненным корпусом. Ну да попытка не пытка, Лаврентий Палыч.
Короче говоря, подвернулся повод, и volens nolens я обзавелся новым мобильштейном — Sony Ericsson Z600. Если зажмуриться на поганенькую цифровую камеру, аппарат замечательный и в лучших традициях покойника R520. Подключение к «Телепату» оказалось делом десяти минут: скачиваешь архив с так называемым джава-мидлетом, распаковываешь и пересылаешь его на мобильный телефон по Bluetooth-протоколу. Запускаешь GSMKeeper (так называется мидлет), соединяешься с сервером «Телепата», после чего по электронной почте получаешь мастер-код, который и вводишь в мидлет при первом запуске. Как видите, никаких мук, в том числе и родовых. Чистое удовольствие.
Муки начались, когда я решил установить GSMKeeper на Palm Tungsten T3. В принципе можно было замечательно без этого обойтись, поскольку работать с WM-кошельком напрямую с мобильного телефона очень удобно (тем более на большом и ярком цветном экране Z600). Но, во-первых, что за «Голубятня» без духа первопроходимства? Во-вторых, привычку, выработавшуюся от совместной жизни с квазимодой R520, оказалось не так-то просто изжить: Z600 по-прежнему лежал в сумке (или кармане), а вся работа велась через Т3. Правда, была и третья причина: всякий раз, как я извлекал на людях Z600, обязательно находился тинейджер, который со свойственными для Одессы простотой душевного склада и отсутствием предрассудков тут же спрашивал: «Это у вас Самсунг?» Вопрос для меня вдвойне болезненный, поскольку три года назад я предсказал неудачу попыткам корейских производителей мобильных телефонов завоевать рынок престижных моделей. Мне, наивному старому дураку, тогда казалось, что престиж зависит от многолетнего имиджа и традиций, а вовсе не связан с обилием рекламно-денежной массы. Сегодня вынужден признать свое безоговорочное поражение: мобильники LG и Samsung заткнули за пояс «Семёны», «Нокии» и «Моторы».
Итак, я решил запустить GSMKeeper на Т3. На сайте «Телепата» сказано, что для корректной работы необходимо установить некий WebSphere Micro Environment. Едва я прочитал эту печальную фразу, у меня засосало под ложечкой. Умом, конечно, понимаю, что речь идет о пользовательской среде, которая позволяет запускать джава-приложения под Palm OS. Вот только сердцу не прикажешь: в чем тогда заключается пресловутая надплатформенность джавы, если приложения, написанные на этом языке, сами по себе работать не могут, а требуют специального посредника?
Тот факт, что «пользовательские среды» являются скверно закамуфлированной попыткой скрыть технологическую несовместимость, еще полбеды. Гораздо хуже, что разработчики, пытаясь закрепить свое монопольное положение, частенько протаскивают в этих «средах» проприетарные примочки, которые еще больше усиливают несовместимость.
На сайте WebSphere Micro Environment с облегчением обнаружил, что «пользовательскую среду» распространяет PalmOne — гомозиготное подразделение Palm, отвечающее за разработку программного обеспечения. По крайней мере, можно надеяться, что не возникнет проблем с дополнительной несовместимостью. Как я ошибался!
Итак, скачал WebSphere Micro Environment, установил. Дальше читаю: «После загрузки и установки среды джава, вы можете запускать на своем устройстве PalmOne джава-приложения, известные как «мидлеты». Мидлет — это Мобильный Джава Апплет (Mobile Java Applet), распространяемый в двух форматах: родном джава-архиве («JAR») и палм-ресурсе («PRC»). Если мидлет существует в виде файла PRC, то его можно просто установить с помощью Palm Quick Install или HotSync. Если мидлет представлен только в формате JAR, его следует загрузить с веб-сайта, используя браузер на вашем PalmOne устройстве».
Позвольте, может я чего-то не понимаю? Джава-приложения только тогда будут джава-приложениями, когда они распространяются в своем родном формате (JAR). В противном случае (c расширением PRC) речь идет уже о приложениях Palm OS. Не удивительно, что на сайте «Телепата» GSMKeeper представлен в двух файлах: один с расширением JAR, другой — JAD (эдакий заголовок, содержащий общую информацию о джава-архиве: название мидлета, версия, конфигурация и т. п.).
Словно предвидя непреодолимые сложности со своей «пользовательской средой», PalmOne любезно предлагает загрузить образцы джава-мидлетов прямо на сайте в формате PRC. Все замечательно, только этот мусор никому не нужен: убогие поделки, которые я бы постеснялся выкладывать на всеобщее обозрение.
Вот тут-то и пошли родовые муки. Запускаю браузер WebPro на своем наладоннике и скачиваю GSMKeeper с сайта «Телепата». Мидлет выложен в zip-архиве, поэтому приходится сохранить его на SD-карте, затем разархивировать и… что делать дальше? Естественно, T3 программу с расширением JAR не понимает, тем более что это не программа, а архив. Возникшая в «Палме» после установки утилита Midlet HQ вообще не умеет обращаться к карте SD. Дальше хуже. Коли браузером подцепить zip-архив не удается, пытаюсь сделать это через Midlet HQ. Читатель должен по достоинству оценить богатство интерфейса «пользовательской среды» WebSphere Micro Environment (рис. 2).
И все! Стоит ли говорить, что вписывать в эту строку адрес, по которому на сервере «Телепата» расположен zip-архив с GSMKeeper, совершенно бесполезное занятие? Midlet HQ архивов в упор не видит. Тем не менее я попробовал, — разумеется, безрезультатно. Что делать? Удалять гланды перректально — давно знакомое, почти рутинное занятие. Распаковываю GSMKeeper и выкладываю файлы GSMKeeper_GPRS.jar и GSMKeeper_GPRS.jad на своем собственном сервере. Сначала пытаюсь скачать их через Midlet HQ — ничего не получается: выскакивает сообщение о какой-то несовместимости джава-архива. Тогда вписываю в командную строку браузера WebPro адрес, по которому располагаются файлы мидлета на моем сервере. Нет контакта.
«Ага! — осеняет меня. — Нужно создать веб-страничку, а затем разместить на ней линки». Рисую страничку, размещаю линки, скармливаю эту страничку сначала Midlet HQ, затем WebPro. Nichts! Nihil! Nada! Zilch!
Здесь я задумался на полчаса. Мысль о том, что Web Money сварганил кривой джава-мидлет, в голову не приходила. Не потому, что в Web Money сидят очень ответственные люди (проколоться каждый может!), а потому, что на Z600 я установил джава-мидлет из точно того же архива. Остается последнее: кривизной страдает сама WebSphere Micro Environment. Поскольку все варианты уже перепробованы, на чистой интуиции переименовываю файлы мидлета в 1.jad и 1.jar, затем указываю прямой линк в Midlet HQ и WebPro. Опять Nichts! Nihil! Nada! Zilch!
Заключительный аккорд: размещаю линки на 1.jad и 1.jar на специально созданной страничке своего сайта и скармливаю ее адрес WebPro. По-прежнему глухо, затем Midlet HQ… ура, схавала! Поразительным образом «пользовательская среда» джава не понимает прямых линков на файлы JAR и JAD, зато понимает адрес типа internettrading.net/1.html. Midlet HQ самостоятельно просматривает веб-страницу, отлавливает на ней все jad- и jar-файлы (причем исключительно с односложным названием), загружает их в наладонник и далее корректно все устанавливает. После чего Midlet HQ приобретает осмысленный вид (рис. 3).
Что касается самого GSMKeeper’а, то с ним все как у матросов, у которых, как известно, нет вопросов (рис. 4).
Теперь скажите на милость: на кого рассчитана работа в Palm OS с джава-приложениями? Разве найдется на свете среднестатистический пиндос (или россиянец), способный — нет, даже не разобраться! — а просто потратить два с половиной часа на распутывание змеиного клубка: рисование веб-страниц, переброску файлов на запасной сервер (да и где его взять-то?), переименование мидлетов и, наконец, подбор методом тыка никем не документированных способов загрузки? Из всего сказанного и вытекает мораль двухсотого выпуска «Голубятни»: не всем же гаечные ключи подавать — кто-то должен и разгребать конюшни Авгиевы от софта.