Разработать по мобильным телефонам (Java), с помощью SDK или нет?

Недавно я должен разработать по мобильным телефонам с помощью Java, и я планирую сделать разработку на следующих брендах:

Nokia

Samsung

SonyEricsson

Motorola

LG

Я просмотрел "сайт разработчика" каждой компании, и похож, они все обеспечили свой собственный SDKs для разработки J2ME.

Я действительно плохо знаком с этим полем, и у меня есть несколько вопросов:

  1. Так как они все поддерживают платформу Java, почему нам нужен дополнительный Java SDKs?

  2. Чему я могу извлечь выгоду из SDKs?

  3. Что определяет, должен ли я использовать SDKs или нет?

7
задан gnat 7 January 2013 в 18:45
поделиться

4 ответа

Все зависит от того, насколько сложным будет приложение, которое вы хотите разработать.

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

Также необходимо учитывать, что каждый производитель может поддерживать несколько операционных систем и платформ.

У Nokia есть Series40 (3-я и 5-я редакции), Series60 (2-я, 3-я и 5-я редакции), Series80.

У Samsung есть как минимум 2 основные версии собственной платформы и последние 2 версии Series60

SonyEricsson имеет 3 основные версии своей платформы JP8 (и JP7 тоже), Series60 5th edition, UIQ 2.x и UIQ 3 .x

Series80, Series60, UIQ 2.x и UIQ 3.x основаны на операционной системе Symbian. В разных версиях Symbian OS использовались разные JVM, и несколько компаний предоставили реализации JSR.

Motorola имеет как минимум 2 основные версии своей собственной платформы и пару устройств UIQ

1 - Поскольку все они поддерживают платформу Java, зачем нам дополнительные Java SDK?

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

Многие функции необходимо кодировать в зависимости от платформы, если вы хотите, чтобы один и тот же код работал на многих платформах одновременно.

Многие платформы J2ME также добавляют нестандартные API, свойства, конфигурации, «ошибки» ...

Что наиболее важно, SDK производителя должны позволять такие вещи, как отладка на устройстве или развертывание мидлетов через USB. Они предоставляют базовые или расширенные инструменты, которые помогают при тестировании на устройстве, потому что в этой области обычно не хватает общего WTK.

2 - Что я могу получить от SDK?

Очень вероятно, что да. Хорошо, поэтому большинство из них будет работать только на настольном компьютере с Windows, но сами SDK должны быть бесплатными.

3 - Что определяет, следует ли мне использовать SDK?

Начните с WTK.Когда вы поймете, что пытаетесь сделать что-то, специфичное для производителя телефона, получите соответствующий SDK.

Один пример: пример приложения WTK PDAPDemo содержит элементарный браузер файловой системы. Он отображает очень разные результаты на разных платформах.

По мнению Павла Алексеева, DeviceAnywhere - отличный инструмент,при условии, что у вас есть надлежащий бюджет на тестирование. Nokia также предлагает нечто подобное, но, очевидно, ограничивается телефонами Nokia.

7
ответ дан 7 December 2019 в 07:45
поделиться

Да, это хорошая идея.

Если разрешить исключение, главным образом, это реализация, определенная в погоде размотки стека до завершения работы приложения. Так что, на мой взгляд, важно уловить все исключения в основном.

Затем возникает вопрос, что с ними делать.
Некоторые ОС (см. MS и SE) предоставляют некоторые дополнительные средства отладки, поэтому полезно просто повторно бросить исключение после того, как вы его поймаете (потому что стек все равно был размотан сейчас).

int main()
{
    try
    {
        /// All real code
    }
    // I see little point in catching other exceptions at this point 
    // (apart from better logging maybe). If the exception could have been caught
    // and fixed you should have done it before here.

    catch(std::exception const& e)
    {
         // Log e.what() Slightly better error message than ...
         throw;
    }
    catch(...)   // Catch all exceptions. Force the stack to unwind correctly.
    {
        // You may want to log something it seems polite.
        throw;  // Re-throw the exception so OS gives you a debug opportunity.
    }
}
  • Будет ли он хорошо играть с нитями, которые прорастают позже?

Он не должен влиять на нити. Обычно необходимо вручную присоединить все дочерние потоки, чтобы убедиться, что они вышли. Точные детали того, что происходит с детскими нитями, когда основные выходы не совсем определены (поэтому прочитайте вашу документацию), но обычно все детские нитки умирают мгновенно (отвратительная и ужасная смерть, которая не включает разматывание их стопок).

Если вы говорите об исключениях в дочерних потоках. Опять же, это не совсем определено (поэтому прочитайте вашу документацию), но если поток выходит через исключение (то есть функция, используемая для запуска потока выходит из-за исключения, а не возврата), то это обычно приводит к завершению приложения (то же влияние, что и выше). Поэтому всегда лучше остановить выход ВСЕХ исключений из потока.

  • не нарушит ли он сегментации обработки (захваченные в другом месте в качестве сигнала)

На сигналы не влияет механизм обработки исключений.
Но поскольку обработчики сигнала могут поместить нечетную структуру в стек (для их собственной обработки возврата к нормальному коду), не является хорошей идеей выбрасывать исключение из внутри обработчика сигнала, так как это может вызвать неожиданные результаты (и определенно не является портативным).

  • не повлияет ли это на другие блоки try... catch, неизбежно вложенные внутрь, которые предназначены для обработки ожидаемых исключений?

Не должны влиять на другие обработчики.

-121--2475397-

", что приведет к «Исключение и сбой».

«Исключение» является исключением и может быть захвачено в catch.

Поэтому дополнительное исключение является избыточным, если оно не добавляет ясности в код. В данном случае это не так. На самом деле, вы только что взяли неконтролируемое исключение ошибки программиста и повысили его до проверенного исключения.

Создание проверенного исключения для ошибки программиста фактически означает, что ваш код должен явно обрабатывать возможность того, что программист ввел ошибку, когда они не сделали этого.

-121--266698-

Преимущества SDK для конкретных поставщиков только при необходимости использования API для конкретных поставщиков. В большинстве случаев Sun WTK было бы достаточно.

Что касается целей тестирования, я не предлагаю полагаться на эмуляторы. Вам лучше попробовать тестирование на устройстве. Nokia и Samsung обеспечивают удаление доступа к устройствам для последних устройств. Также можно попробовать deviceanyhere .

1
ответ дан 7 December 2019 в 07:45
поделиться

Я бы большую часть своей разработки сделал с обычным старым Sun..err ... Oracle Java WTK, а затем, если вы нужно провести некоторое тестирование, получить эмуляторы / SDK от этих компаний. В остальном я бы их в основном избегал.

0
ответ дан 7 December 2019 в 07:45
поделиться

Функциональность встроенной камеры обычно различается для разных марок телефонов, и предоставляемые API могут быть очень полезны при попытке сделать что-то более сложное, чем создание простого снимка. Например, телефоны SonyEricsson позволят вам отображать поток с камеры через VideoCamera прямо на холст, что очень быстро, но не позволяет вам контролировать, как часто канал выводится на экран. Чтобы рисовать графику поверх видеопотока без чрезмерного мерцания, вам необходимо добавить флаг OVERLAY (1 << 8) к вызову initDisplayMode () VideoCamera, не все бренды поддерживают дополнительный флаг.

0
ответ дан 7 December 2019 в 07:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: