Хорошо, теперь, когда у меня есть некоторый опыт разработки приложений для обеих платформ (фактически 2 приложения для каждой платформы), я могу ответить на свой вопрос. Прежде всего, я должен отметить, что
Различия между платформами - это не только пользовательский интерфейс. Есть много вещей, которые выполняются по-разному, например, Bluetooth, локализация, уведомления, хранение и т. д. '.
1) Я использовал один контроллер, который переключается между многими представлениями, но я думаю, что способ Android лучше, другими словами, контроллер должен быть разбит на более мелкие субконтроллеры, чтобы он больше соответствовал действиям Android. Это гарантирует, что запускается только необходимый код, а не весь контроллер в памяти, когда приложение активно.
2) Я использовал ссылки на источники, а не на зависимости проекта. Каждое мое приложение - это проект, который тянет в несколько исходных папок (используя связанные источники). Например, приложение Android указывает на папку Impl для платформы Android, общую папку платформы, папку Impl для Android Bluetooth, общую папку Bluetooth, папку Impl для Android Storage, универсальную папку хранения, универсальную папку контроллера и папку контроллера, специфичную для Android и аналогично для хранения ... (приложение J2me извлекает все общие папки, но извлекает папки J2me, а не папки android)
каждая исходная папка содержит несколько пакетов ...
3) Я использую фабрики, поэтому у меня есть фабрики Android, которые реализуют универсальные интерфейсы, которые создают объекты Android (которые приходят из исходных папок Android), и фабрики j2me, которые создают объекты j2me (которые исходят из исходных папок j2me), и, конечно, все созданные объекты реализуют общие интерфейсы (которые приходят из общих исходных папок)
4) я узнал, как обрабатывать Bluetooth, уведомления, хранилище и т. Д. На каждой платформе, и самое интересное было абстрагировать различные способы работы на каждой из платформ в общий абстрактный способ, применимый к обеим платформам.
Преимущества такой работы (связывание с источником):
1) У меня есть все проекты / приложения в одной рабочей области (теперь у меня есть семейство приложений j2me и другое из приложений Android). я вижу весь общий код в каждом проекте и могу легко изменить его, работая над каким-то проектом, и, очевидно, он сразу же влияет на все другие проекты, которые он использует.
2) рефакторинг тоже работает очень хорошо. я могу легко перемещать классы из одной исходной папки в другую.
3) Что интересно делать так, так это то, что обычно программисты пишут базовый класс и специализируют его на подклассах. Но, связывая разные исходные коды, вы можете получить некоторый класс, расширяющий два разных суперкласса. Другими словами, у меня может быть класс X, расширяющий класс Y, но в двух разных проектах класс Y отличается. это позволяет мне иметь два разных базовых класса для конкретной платформы для одного и того же универсального класса ... (это должно быть очень запутанным для читателя)
так что, хотя каждый из моих проектов ссылается на общий код и уникальный код, все мои источники находятся в одном месте, а двоичные файлы каждого проекта находятся в пространстве проекта. поэтому общий файл .class может дублироваться в каждом проекте, который их использует.
Итак, что абстрагировало всю работу в общие абстрактные классы, и мой контроллер имеет с ними дело. Абстрактные классы обычно реализуются специфичным для платформы способом, прозрачным для моего абстрактного / универсального контроллера.
хорошо, извините, что этот ответ очень абстрактный, поэтому позвольте мне привести еще один конкретный пример:
так что теперь у меня есть, например, что-то под названием BluetoothController. это абстрактная сущность, которая имеет реализацию в J2ME и Android. в будущем, если мне понадобится использовать Bluetooth в новом проекте Android, я просто добавлю общий код и код для Android для Bluetooth. аналогично для j2me, если я хочу разработать мидлет. мой повторно используемый компонент состоит из общих и платформо-зависимых объектов.
Я надеюсь, что этот ответ поможет людям, которые пытаются разработать приложение для J2ME и для Android (или какой-либо другой будущей платформы Java)
Если у вас есть какие-либо вопросы, вы можете попробовать связаться со мной ...