Портирование Java-сервера на Android - PullRequest
6 голосов
/ 06 сентября 2011

Я работаю над созданием системы медицинских карт, используя OpenMRS в качестве бэкэнда для Android. OpenMRS зависит от некоторых тяжеловесных библиотек, включая Hibernate и Spring.

«Dexing» всего приложения OpenMRS создает файл, который слишком велик даже для формата файлов Android classes.dex (это ограничение размера уже хорошо документировано) Чтобы обойти это, в настоящее время я работаю над созданием нескольких файлов dex из зависимостей и загрузкой их во время выполнения с помощью Android delo classloader.

Из-за того, как мобильная версия сервера будет использоваться на практике, фактические требования к обработке будут очень низкими, несмотря на огромные зависимости. Я не пытаюсь запустить корпоративный сервер на своем телефоне.

Прежде чем потратить недели своего времени на разработку этого, я просто хотел спросить сообщество разработчиков: эта стратегия - несбыточная мечта? Если я загрузлю все эти библиотеки, загрузится ли весь двоичный файл в ОЗУ и просто сломается система? Есть ли хороший способ оптимизировать такое приложение? Есть ли какая-то очевидная проблема или решение, которое я здесь упускаю?

1 Ответ

1 голос
/ 13 сентября 2011

Короткий ответ: не надо.

Длинный ответ заключается в том, что большинство устройств все еще выделяют относительно небольшую часть (между 40-128 мегабайтами ОЗУ) памяти для каждой кучи. Вы действительно ДЕЙСТВИТЕЛЬНО должны подумать об архитектуре приложения, чтобы основная часть логики и, следовательно, библиотек и тяжелого кода все еще находилась на сервере, а мобильное приложение просто считывает облегченные данные (JSON?) С сервера для отображения. Устройства должны действительно использовать только собственные элементы, такие как данные о местоположении, и предоставлять пользователю интерфейс, который согласуется с остальной частью вселенной Android. Кроме того, вы должны искать способы сохранить как можно больше логики от нативного приложения. Если только по какой-то другой причине, кроме как для обеспечения безопасности. Обратный инжиниринг приложений для Android тривиален и чем больше вы держите на стороне сервера, тем более безопасным вы будете.

...