Кросс-платформенная Java? Android и рабочий стол

У нас есть приложение для рабочего стола/веб-приложения Java, а также доступ к разработке Android.

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

Из того, что мы можем сказать, не так много возможностей для запуска обычных Java-приложений на Android. Но интересно, может ли это сделать иначе? То есть, легко запускайте приложения для Android на рабочем столе (без установки пользователем sdk или Android-эмулятора)?

В префектном мире нам нужно одно приложение для обеих платформ. Реально, хотя кажется, что нам нужно иметь одно приложение с двумя передними концами?

Ответ 1

В принципе, вы должны разорвать свое приложение как минимум на три проекта... один Android-проект для Android-специфического материала, один настольный Java-проект для конкретных настольных приложений, а затем один проект библиотеки Java для общей функциональности (где большинство ваша настоящая работа должна быть выполнена). Затем вы можете повторно использовать проект библиотеки как в Android, так и в настольных проектах.

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

Удачи.

Ответ 3

Откуда вы узнали об этом?

Основной язык разработки Android - это Java, хотя они использовали Dalvik VM вместо Java VM. Вам нужно будет перекомпилировать ваш .java-код, и есть некоторые части Java-библиотек, которые недоступны на Android и наоборот, и вам, очевидно, нужно будет написать отдельный интерфейс GUI; но что это, вы можете иметь в основном ту же самую кодовую базу для работы на обеих платформах.

Ответ 4

Я попробовал следующий подход: напишите библиотеку обертки для рабочего стола, которая предоставляет те же классы, что и пакет android.graphics, но использует SWT под капотом.

Я собрал сырой, быстрый и грязный прототип, чтобы продемонстрировать подход: https://github.com/davidair/android-swt-demo

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

Ответ 5

Вы правы в том, что не сможете принимать файлы стандартных классов и запускать их на Android. Байт-код, созданный dalvik vm, отличается от байтового кода, созданного из jvm. Однако большая часть вашего кода будет многократно использоваться и с хорошим дизайном вы могли бы значительно уменьшить эту проблему.

Ответ 6

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

Ответ 7

Вы можете разбить свою задачу на два проекта. Один из них относится к бизнес-материалам, в которых вы должны обрабатывать всю работу, за исключением взаимодействия с пользователем. А другой - взаимодействовать с пользователем и показывать данные. Последняя часть в идеале должна быть подготовлена ​​в HTML5, так что многие клиенты могут увидеть gui безупречно, и вам не нужно писать разные коды для разных клиентских платформ.

Ответ 8

Есть несколько кроссплатформенных инструментов для графического интерфейса. Например, Codename, кажется, хорошо поддерживается и является открытым.