| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Java и андроид |
| Автор: Karadul 11.12.2012, 23:54 | ||
| Как там обстоят дела с конвертацией программ на яве на ведро? http://en.wikipedia.org/wiki/Dalvik_%28software%29
Это реально работает или придется что-то переписывать? |
| Автор: jk1 12.12.2012, 13:19 | ||
В основном работает, есть проблемы только со специфичным функционалом. На андроиде: 1) Могут отсутствовать security provider'ы для некоторых криптоалгоритмов 2) Отсутствуют Swing и AWT 3) System.err и System.out ничего не делают 4) Различаются наборы системных пропертей (System.getproperty(...)) 5) Механизм загрузки классов отличается, у Dalvik'а свои представления о класслоадинге. Так что если приложение использует сильное колдунство с загрузчиками классов, то оно с высокой вероятностью на андроиде не заработает Ну и конечно всякие нативные завязки на платформу вроде JNI/JNA, Runtime.exec(...) и т.д. тоже поотваливаются |
| Автор: Karadul 12.12.2012, 16:17 |
| То есть гуй программа не спортируется? 3. А какой аналог System.err и System.out? 5. А что такое "сильное" колдунство? |
| Автор: jk1 12.12.2012, 19:07 | ||||||
Если gui на Swing\AWT - то нет. Если gui на другой технологии, то надо смотреть насколько она поддерживается под андроидом. SWT, как утверждается, работает, но сам я не пробовал.
Вместо этого на андроиде предлагается логи писать.
Например написание собственного загрузчика классов, который получает байткод с удаленного сервера или генерирует его в рантайме. |
| Автор: Karadul 13.12.2012, 16:55 |
| А в других языках стандартные потоки есть? Как тогда работают консольные программы? Все ЖМУ утилиты рассчитаны на консоль. |
| Автор: jk1 14.12.2012, 12:30 | ||
Под голый андроид консольные java-программы вообще не пишут. Если хочется, чтобы консольные java-приложения работали на андроиде, придется http://www.codeproject.com/Articles/202996/Write-a-console-app-on-Android-using-Java Можно ли писать на других языках под андроид так, чтобы был доступ к нормальной консоли - не знаю, под андроид только на java писал |
| Автор: Karadul 21.12.2012, 05:39 |
| А несовместимость между разными версиями андроида для явы есть, или это-сишкопроблемы? |
| Автор: jk1 23.12.2012, 07:48 | ||
Обычно java-код для андроида backward-compatible, т.е. код написанный для 2.1 будет работать на 2.2 и старше. В обратную сторону все не так радужно, так как фичи появлялись в платформе постепенно и на целевом смартфоне нужных приложению фич может и не быть из-за древности платформы. Как правило в манифесте указывается minSdkVersion для указания на минимальноую поддерживаемую приложением версию платформы. Максимальную версию указывать, по понятным причинам, смысла нет. |
| Автор: Karadul 24.12.2012, 10:34 |
| Я слышал, что даже младшие версии андроида несовместимы. Интересно, откуда растут ноги у этого мнения? |
| Автор: LSD 24.12.2012, 12:00 |
| Ну например теперь в GUI потоке запрещено делать сетевые вызовы. Это и раньше не приветствовалось, но теперь просто вызовет ошибку. |