Народ! =)
Тут возникла потребность написать небольшого клиента по работе с веб-сервисом для мобильных устройств. Вот у Gmail можно через браузер, а можно скачать мобильную версию. Хочется также.
Из функций надо:
1. Получение картинки с камеры
2. Отображение графики на экране (ну думаю по дефолту, но все равно напишу)
3. работа с gps или gsm (для позиционирования)
4. работа с сокетами (или что там) для передачи и получения данных с внешнего сервиса через (gsm, gprs итп, как я понял телефон должен абстрагировать понятие соединения)
Начал читать rtfm всякие =) и ужаснулся....
Получается такая картина (я мог что-то не так понять, поправляйте если что):
Есть спецификация J2ME, которая предоставляет интерфейсы, которые должны полностью поддерживаться практически всеми сотовыми телефонами одинаково. так?
Хватит ли её для работы с перечисленными требованиями?
чем отличается J2ME от J2SE? это просто расширение? на сколько оно поддерживается сейчас производителями?
Далее меня больше всего убило:
1. сотовые телефоны — у каждого производителя свой SDK. Как я понял все равно надо скачивать все, чтобы хотя бы на эмуляторах погонять приложение? Но в тоже время все эти сдк имеют также специализированные интерфейсы для работы именно с их архитектурой?
То есть получается, чтобы сделать качественное приложение для мобильного устройства надо писать абстрактную логику приложения, и выносить слой взаимодействия с телефоном, которая будет реализовываться в зависимости от модели телефона? то есть кучу кода для поддержки, а также кучу конечных дистрибутивов?
2. WinCE — .net Compact и нет проблем? то есть все приложение надо ещё кроме джавы на .нет портировать и поддерживать? =(
3. Аналогично для iPhone вообще свой язык, и свой сдк
4. Android — ну хоть джава, но опять таки свой сдк =(
5. что ещё забыл?
Это правда такая картина? =) или я все не так понял?
Re: Общая картина программирования под мобильные устройтва
По поводу J2ME — В Sun планировали прекратить развитие этой ветки в связи с тем, что производительность современных телефонов уже вполне сравнима с производительностью пусть и слабых компьютеров. Но это не значит, что нужно от нее отказываться, поскольку ява ведь не только в новых телефонах есть и существует большое количество пользователей устройств с поддержкой J2ME.
При написании приложений для мобильных устройств не всегда достаточно иметь только эмулятор этого самого устройства. Лучше все-таки иметь под рукой само устройство, чтобы проверить работу приложения в полевых условиях. К примеру разработчики под Symbian нередко в своем распоряжении держат целый зоопарк телефонов.
К вопросу об SDK — да, у каждого производителя существует оригинальный SDK, который позволяет использовать функции УНИКАЛЬНЫЕ для данного типа устройств. Таким образом если писать какое-то простое приложение (калькулятор, вычислитель интегралов, словарь-переводчик), то естественно можно обойтись общим SDK.
Re[2]: Общая картина программирования под мобильные устройтв
А из того что я перечислил? ну как я понял одними интерфейсами j2me у меня дело не обойдётся?
Тогда может лучше сразу, например, скачивать симибиановскую сдк, и писать под него? а потом уже переписывать под разные телефоны?
Re[3]: Общая картина программирования под мобильные устройтв
Здравствуйте, Inco, Вы писали:
I>А из того что я перечислил? ну как я понял одними интерфейсами j2me у меня дело не обойдётся? I>Тогда может лучше сразу, например, скачивать симибиановскую сдк, и писать под него? а потом уже переписывать под разные телефоны?
Под Айфон ситуация следующая — есть свой СДК и язык, который очень похож на приплюснутый Си и есть только один хороший канал сбыта для хорошего софта — AppStore
Плюс явы — портировать приложения попроще, да и распространять ява-приложения проще.
Плюс симбы — обладателей устройств на этой платформе много.
Re: Общая картина программирования под мобильные устройтва
Здравствуйте, Inco, Вы писали:
I>Получается такая картина (я мог что-то не так понять, поправляйте если что): I>Есть спецификация J2ME, которая предоставляет интерфейсы, которые должны полностью поддерживаться практически всеми сотовыми телефонами одинаково. так?
J2ME — это платформа, в нее входят множество библиотек. На данный момент можно с почти полной уверенностью утверждать, что все более менее популярные телефоны с явой поддерживают как минимум CLDC 1.0 и MIDP 2.0. Это базовые библиотеки. К сожалению, из-за разных аппаратных возможностей и по некоторым другим причинам развелся зоопарк виртуальных машин под мобилы, причем одну и ту же VM могут адаптировать к разным устройствам так, что она будет содержать различные реализации спек. Соответственно, имеем кучу багов, которые могут быть завязаны на конкретную платформу телефонов, а могут быть и на конкретную прошивку конкретной модели (сейчас встречается крайне редко).
Правда, базовые библиотеки (CLDC 1.0 и MIDP 2.0) уже все вендоры реализуют нормально практически без специфики своих моделей.
I>Хватит ли её для работы с перечисленными требованиями?
Кроме CLDC 1.0 и MIDP 2.0 тебе понадобятся:
-MMAPI (JSR-135) для получения картинки с камеры
-Location API (JSR-179) для работы с GPS или с сервисами ОСС для позиционирования (для справки — в Москве не один из большой тройки эти сервисы не предоставляет). Для некоторых телефонов (например, Sony Ericsson JP-8 и новее) можно не заморачиваться с Location API, а сделать, как в мобильных яндекс-картах и том же мобильном гугле. Если аппарат может предоставить идентификатор вышки, с которой он в данный момент работает, то можно определить его координаты с точностью 500-1000 метров.
I>чем отличается J2ME от J2SE? это просто расширение? на сколько оно поддерживается сейчас производителями?
Это разные платформы. Одна для мобильных устройств, другая для десктопа. По API они пересекаются только в базовых классах.
I>Далее меня больше всего убило: I>1. сотовые телефоны — у каждого производителя свой SDK. Как я понял все равно надо скачивать все, чтобы хотя бы на эмуляторах погонять приложение? Но в тоже время все эти сдк имеют также специализированные интерфейсы для работы именно с их архитектурой?
Нет. Я обхожусь только SDK от Sony Ericsson — тот же самый WTK от Sun, но с возможностью отладки на устройстве. SDK других производителей нужны, только если ты будешь использовать их нестандартные библиотеки (спец. интерфейсы для работы именно с их мобилами), но сейчас нужда в таких проприетарных либах практически полностью отпала.
А конечное приложение надо гонять на всех аппаратах, на которых оно должно работать. Есть списки совместимости. Например, если работает на Sony Ericsson W890, то можно с очень большой уверенностью утверждать, что заработает и на всех остальных из JP-8.
30-40 моделей под рукой гарантированно охватывают около 300-350 моделей, то есть под эти модели были официальные версии приложения.
Сейчас вижу, что семнадцатью моделями, которые есть для тестирования, охватывается около четырех сот — пятиста (работа не гарантирована, но по логам вижу примерно такое количество разных моделей)
I>То есть получается, чтобы сделать качественное приложение для мобильного устройства надо писать абстрактную логику приложения, и выносить слой взаимодействия с телефоном, которая будет реализовываться в зависимости от модели телефона? то есть кучу кода для поддержки, а также кучу конечных дистрибутивов?
В принципе да. Но теоретически можно отделаться и одним дистрибутивом, если графические элементы получится составлять динамически. У меня девять портов (версий приложений под разные мобилы) охватывают около 400-500 моделей. Если бы не пара специфичных функций (работа с СМС, блютус и завязка на ресурсы устройства), можно было бы обойтись вообще одним-двумя портами.
I>2. WinCE — .net Compact и нет проблем? то есть все приложение надо ещё кроме джавы на .нет портировать и поддерживать? =(
Для Windows Mobile есть виртуальные машины, правда, не факт, что существует хоть одна с поддержкой Location API, но тут надо смотреть.
Возможно, и в .net Compact нет поддержки работы с GPS, но я не проверял.
I>3. Аналогично для iPhone вообще свой язык, и свой сдк I>4. Android — ну хоть джава, но опять таки свой сдк =( I>5. что ещё забыл?
Как уже писали, Symbian, но конкретно в смартфонах от Нокии очень неплохая поддержка J2ME, так что возможно отдельно под симбиан писать и не придется.
На остальное, думаю, можно забить. BREW специфичен только для американского рынка.
I>Это правда такая картина? =) или я все не так понял?
Некоторый хаос присутствует
Re[2]: Общая картина программирования под мобильные устройтв
Здравствуйте, 4y4z, Вы писали:
4> По поводу J2ME — В Sun планировали прекратить развитие этой ветки в связи с тем, что производительность современных телефонов уже вполне сравнима с производительностью пусть и слабых компьютеров.
Это опять про высказывание Гослинга?
Уже тянет на классический пример, как умозаключение одного, возможно далекого от специфики, журналюги, который неправильно понял смысл сказанного, приводит к дезинформированию очень многих людей, включая специалистов, и дискредитации технологии или платформы.
Вот, что Гослинг хотел сказать на самом деле: http://blogs.sun.com/jag/entry/javame_is_not_dead
J2ME не будет закрыто Sun'ом. Хоть и долго, но разработка следующей версии API для мобил (MIDP 3) подходит к концу. Когда появится следующая платформа для мобильных устройств Java FX Mobile (не путать с Java FX, это совершенно разные понятия), она будет в себя в полной мере включать поддержку J2ME.
4> Но это не значит, что нужно от нее отказываться, поскольку ява ведь не только в новых телефонах есть и существует большое количество пользователей устройств с поддержкой J2ME.
И то хорошо. Предыдущие коллеги, постящие о скорой кончине J2ME, до этой мысли не доходили.
4> При написании приложений для мобильных устройств не всегда достаточно иметь только эмулятор этого самого устройства. Лучше все-таки иметь под рукой само устройство, чтобы проверить работу приложения в полевых условиях. К примеру разработчики под Symbian нередко в своем распоряжении держат целый зоопарк телефонов.
Я бы сказал, что если приложение на продажу, то надо обязательно иметь как минимум по одному устройству из каждой группы совместимости, поддержка моделей которых будет заявлена.
Если бесплатное, то десяток устройств все равно понадобится
4> К вопросу об SDK — да, у каждого производителя существует оригинальный SDK, который позволяет использовать функции УНИКАЛЬНЫЕ для данного типа устройств. Таким образом если писать какое-то простое приложение (калькулятор, вычислитель интегралов, словарь-переводчик), то естественно можно обойтись общим SDK.
Если говорить о J2ME, то не у каждого, и на данный момент довольно сложно придумать приложение, для которого непременно понадобились бы функции спец. библиотек. Почти все, если не все, нестандартные библиотеки сейчас если и сохранились на устройствах, то только для совместимости.
Re: Общая картина программирования под мобильные устройтва
Спасибо большое за все посты! =)
А то у меня уже лёгкий шок был, когда понял что предстоит =))
Сейчас завязался с симибианом, скачал sdk. Напишу сперва под него (у самого нокия е50) потом буду по мере уже портировать =)
Re[2]: Общая картина программирования под мобильные устройтв
Здравствуйте, Inco, Вы писали:
I>А можно с тобой через аську связаться? мой номер 284646275
Добавил в аську. Но она у меня редко запущена — на работе стараюсь не включать. Так что лучше обсуждать проблемы на форуме — коллективный разум обладает гораздо большими знаниями
Re[3]: Общая картина программирования под мобильные устройтв
Здравствуйте, Donz, Вы писали:
D>Уже тянет на классический пример, как умозаключение одного, возможно далекого от специфики, журналюги, который неправильно понял смысл сказанного, приводит к дезинформированию очень многих людей, включая специалистов, и дискредитации технологии или платформы.
Статьи пишу периодически конечно, но не журналюга. А по поводу того что будет жить — сам рад узнать от вас об этом. Упустил похоже.
Век живи — век учись как говорится. Спасибо.
Re[4]: Общая картина программирования под мобильные устройтв
D>>Уже тянет на классический пример, как умозаключение одного, возможно далекого от специфики, журналюги, который неправильно понял смысл сказанного, приводит к дезинформированию очень многих людей, включая специалистов, и дискредитации технологии или платформы. 4>Статьи пишу периодически конечно, но не журналюга.
"Журналюга" — это не про вас, естественно А про того, кто на cnet.com изначальную статью про умирающую яваМе написал.
Re[2]: Общая картина программирования под мобильные устройтв
Помнится у Сименса был офигенский эмулятор, который хоть как-то эмулировал его родной UI, на котором можно было увидеть как софтинка будет выглядеть на устройстве.
А в современных SDK что от Самсунга, что от Сонэрика эмуляторы похоже делаются добавлением картинок своих устройств и специфичных классов
Re: Общая картина программирования под мобильные устройтва
Здравствуйте, Inco, Вы писали:
I>Народ! =) I>Тут возникла потребность написать небольшого клиента по работе с веб-сервисом для мобильных устройств. Вот у Gmail можно через браузер, а можно скачать мобильную версию. Хочется также. I>Из функций надо: I>1. Получение картинки с камеры I>2. Отображение графики на экране (ну думаю по дефолту, но все равно напишу) I>3. работа с gps или gsm (для позиционирования) I>4. работа с сокетами (или что там) для передачи и получения данных с внешнего сервиса через (gsm, gprs итп, как я понял телефон должен абстрагировать понятие соединения)
I>Начал читать rtfm всякие =) и ужаснулся....
I>Получается такая картина (я мог что-то не так понять, поправляйте если что): I>Есть спецификация J2ME, которая предоставляет интерфейсы, которые должны полностью поддерживаться практически всеми сотовыми телефонами одинаково. так? I>Хватит ли её для работы с перечисленными требованиями?
Хватит:
1) Получение картинки с камеры JSR-135
2) Отображение графики базовыми классами J2ME
3) Работа с внешним GPS возможна по Bluetooth через JSR-82, с внутренним через JSR-179
4) Работа с сокетами в стандартном наборе MIDP 2.0, но лучше использовать HTTP из соображений совместимости с сетевой инфраструктурой. По крайней мере все социальные сети и фотохостинги делают именно так.
Re[3]: Общая картина программирования под мобильные устройтв
Здравствуйте, std.denis, Вы писали:
SD>Помнится у Сименса был офигенский эмулятор, который хоть как-то эмулировал его родной UI, на котором можно было увидеть как софтинка будет выглядеть на устройстве. SD>А в современных SDK что от Самсунга, что от Сонэрика эмуляторы похоже делаются добавлением картинок своих устройств и специфичных классов
Да, у Сименса эмуляторы наиболее точно повторяли поведение реальных устройств. У Самсунга и СЭ SDK является тот же самый WTK, только со своими шкурками и некоторыми другими косметическими изменениями. Плюс у СЭ есть утилита для отладки на устройстве.
Еще старые эмуляторы от Нокии неплохо эмулировали реальность. Как новые — хз.
Re[2]: Общая картина программирования под мобильные устройтв
Здравствуйте, henson, Вы писали:
H>Хватит: H>1) Получение картинки с камеры JSR-135
Главное, чтобы на этом этапе хватило heap-a для захваченной картинки. Помнится, на таком известном телефоне, как K750i, загрузка картинки полученной с камеры в 2МП, вполне неплохо и стандартно приводило к OOM