Насколько хорошо знания J2ME распространяются на другие мобильные платформы? - PullRequest
4 голосов
/ 17 марта 2010

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

Итак, если я пройду курс, насколько хорошо приобретенные навыки перейдут на платформу, такую ​​как Android?

И у меня есть связанный вопрос. Я довольно хорошо разбираюсь в Java (и других языках программирования), но я не использовал J2ME. Есть ли что-то, что делает особенно болезненным программирование? (В любом случае, Java не так приятен)

Ответы [ 2 ]

6 голосов
/ 18 марта 2010

Переход от удобства работы с Java к комфорту с использованием J2ME должен быть довольно простым переходом. Самыми большими препятствиями могут быть такие вещи, как настройка симулятора телефона или сценария сборки, а также обучение загрузке и запуску сборок на телефоне. Но я уверен, что именно об этом вы расскажете на первой неделе в своем классе. Также есть некоторые различия в том, что входит в состав настольной Java, которая не входит в мобильные API-интерфейсы (как почти любая функция Java 1.5+, некоторые пакеты пользовательского интерфейса и т. Д.), И несколько специфичных для J2ME API-интерфейсов, которые у вас будут использовать для таких вещей, как рисование на экране или реагирование на нажатия клавиш, но все они очень похожи на java и хорошо документированы с помощью Javadoc, поэтому их не очень сложно освоить ... в принципе это может быть по сравнению с урезанной версией Java, в которой отсутствуют функции, которые не очень полезны для мобильных приложений.

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

Переход от J2ME к нативной (не J2ME) разработке Blackberry для меня не был гигантским скачком после почти года разработки J2ME - в основном это означало изучение различных инструментов сборки и способов загрузки приложений Blackberry с телефона с помощью другой симулятор и несколько разных специфичных для Blackberry пакетов для пользовательского интерфейса - в зависимости от того, насколько хороши учебники, которые вы можете найти, это может быть просто или немного «как XYZ переводит на эту новую платформу».

В Android, вероятно, примерно такой же уровень перехода - вы, вероятно, обнаружите, что между J2ME, Blackberry и Android существует довольно много кода, который вы можете использовать повторно, поскольку все три платформы позволяют писать код на основе Java (в моя работа над версиями проектов для BlackBerry и Android на самом деле разделяет кучу кода, не относящегося к пользовательскому интерфейсу, путем создания зависимых проектов) ... Я думаю, что одно из самых больших различий между всеми тремя платформами с точки зрения кодирования заключается в том, что у них разные делая пользовательский интерфейс ... Я имею в виду, что все они по существу будут иметь методы рисования и еще много чего, но каждая платформа имеет свой собственный пользовательский интерфейс и другие собственные пакеты, которые вы должны использовать, которые имеют некоторые различия в том, что есть и что не легко доступно (например, : гораздо легче рисовать градиенты на blackberry, чем на J2ME), доступ к файловой системе немного отличается между платформами в зависимости от того, какой API вы должны использовать и т. д.

Что касается болезненных вещей в J2ME ... Я бы сказал, что проблемы, которые вы не можете отладить с помощью симулятора устройства (например, прерывание телефонного звонка в приложении, звук, который не воспроизводится правильно и т. Д.), Защищенный API-интерфейсы (если вы используете провайдера, такого как ATT, это требует от вас подписи на вашей сборке), и просто попытаться справиться с экранами с крошечными разрешениями и / или медленными процессорами - самое сложное ... ничего такого болезненного Я думаю, что вы ненавидите себя за то, что посещаете уроки по разработке мобильных приложений, и некоторые из этих вопросов, в любом случае, могут выходить за рамки вашего класса.

В целом, я бы сказал, что изучение любой мобильной платформы значительно приблизит вас к желаемой цели изучения определенной конкретной платформы, которая не предлагается в качестве курса, и что есть В курсе вы узнаете множество вещей, которые обобщат:)

PS ... Если в конечном итоге вы хотите изучать Android и должны начать с другого языка мобильных телефонов, я думаю, что изучение J2ME или Blackberry - наиболее подходящие платформы, поскольку все они основаны на Java и имеют немного совпадений в отношении того, какие инструменты вы используете (например, вы, скорее всего, будете использовать Eclipse в качестве IDE для всех трех) по сравнению с Windows Mobile, BREW (на основе C ++) или iPhone (цель C).

PPS ... извините за редактирование еще раз чтобы добавить это ... но я взглянул на внутренние документы нашей компании (нацеленные на новых разработчиков) по настройке среды сборки Android, чтобы увидеть, как это безумие (это совсем не сумасшествие), и оно на самом деле очень похоже на то, что я должен был сделать, чтобы настроить среду blackberry, за исключением установки различных плагинов и SDK. Я думаю, что вы найдете любую из этих двух платформ лишь в небольшом скачке от того, что вы, вероятно, изучите в классе разработки J2ME.

По сути, для написания кода Android в Eclipse необходимо добавить плагин для Android: в Eclipse в меню справки добавьте новое программное обеспечение и добавьте сайт загрузки с URL https://dl -ssl.google.com. / android / eclipse / ), и после того, как вы это настроите, установите JRE по умолчанию в Eclipse для одного из JRE для Android, а не из JDK (предостережение: вам, возможно, придется установить инструменты SDK как хорошо, чтобы получить правильную JRE, которую вы хотите (Google для "Android SDK Tools")). Плагин добавит некоторые специфичные для Android опции меню, которые вам понадобятся, такие как «Преобразовать в проект Android» ... вы, возможно, узнаете достаточно даже на полпути курса J2ME, чтобы попытаться настроить среду разработки Android на свой собственный:)

5 голосов
/ 18 марта 2010

Хороший ответ уже был, но я хотел бы добавить свои 2 цента и постараюсь не быть слишком избыточным. :) Кстати, мой опыт в программировании мобильных игр, средний уровень.

Итак, если я пройду курс, насколько хорошо приобретенные навыки перейдут на платформу, например Android?

Если вы уже знакомы с синтаксисом Java, то изучение J2me будет заключаться в том, чтобы знать, как кодировать во встроенных средах: как писать небольшие коды, с очень низкой производительностью по сравнению с настольными компьютерами и с небольшим количеством API, доступных для вас (на самом деле мало, j2me действительно крошечный API и, да, уже устарел) У них всего несколько общих API-интерфейсов, J2me и Android, поэтому при переходе на Android у вас будет крутая кривая обучения. J2me может быть основой, но не так уж много мяса.

С j2me вы, по крайней мере, получите основы встроенного программирования: жизненный цикл приложения, запуск через эмулируемые среды, сценарии сборки, препроцессоры java (bleh), оптимизацию кода с помощью инструментов, обфускацию кода с помощью инструментов, оттачивание ваших навыков переносимости, развертывание, новая ругательная этиология (да, она обанкротится).

Вы, скорее всего, не будете больше изучать среду оптимизации / профилирования / отладки в среде j2me, потому что она не очень подходит для нее (вы узнаете больше о методологии «гипотеза - проба - ошибка», чем о методе «измерения»). - расчет - применение "). В противоположность этому, Android env дружественен к разработчикам, все делается внутри Eclipse.

И дело в том, что J2me медленно умирает, а Android неплохо стартует, поэтому последний более ценен. Также существует тенденция использовать нативную среду, а не интерпретированную ... и Android разрешает это, а не J2me.

И у меня есть связанный вопрос. Я довольно хорошо разбираюсь в Java (и других языках программирования), но я не использовал J2ME. Есть ли что-то, что делает особенно болезненным программирование?

J2me прост. Что проблематично, так это его мобильность. У некоторых производителей есть расширения, у некоторых носителей есть собственные API, у устройств разные JSR (API / библиотеки), у устройств разные виртуальные машины Java, так что в реальности вы получите разные варианты поведения на устройствах. Добавьте к этому недостатки отладки, иногда довольно болезненно заставить ваше приложение работать должным образом на устройствах. Это самая большая проблема. В противном случае J2me является действительно урезанной версией J2se (версии 3 и меньше, если я правильно помню?), Поэтому она действительно похожа на стандартную Java.

Я думаю, что j2me неплохо для начинающих, но вы должны проверить Android, если вы хотите выйти за рамки.

Ciao!

...