Начиная писать мобильное приложение для Android и ios.
Глядя на множество альтернатив. Не выдерживает html5/webview. В большинстве случаев это вяло. Я пробовал много демонстрационных приложений (phonegap/steroid..) и не чувствовал себя как дома. Не достаточно гладко.
Больше, некоторые игры идут: так никак. Я хочу развитие NATIVE.
Сам по себе объективный-c не является проблемой. Но если я могу создать приложение только с одной разработкой, с языком, который легко кодировать в (java), это звучит неплохо.
CodenameOne заявляет о большей производительности, чем объектив-c, через java vm.
Возможно, они используют C api, но этот api в основном obj-c теперь.
Могут ли некоторые разработчики или даже разработчики сказать мне, действительно ли мне не нужно вводить код на родном языке iOS (obj-c) и получать лучшие результаты через java vm? мне кажется странным.
Цитата прямо со страницы, с которой вы связались:
Небольшой отказ от ответственности заключается в том, что тест Objective-C немного тяжел в вызовах метода/сообщения, которые уклоняются от эталона в нашу пользу. Вызов метода в Codename Один, естественно, намного быстрее, чем эквивалентный код Objective-C из-за семантики этого языка.
Разве это не объясняет, что именно вы спросили? Objective-C имеет архитектуру, из-за которой динамическая диспетчеризация не может быть оптимизирована, тогда как архитектура Java допускает такие вещи, как мономорфный сайт вызова и даже полный метод вложения. Тест, который в значительной степени фокусируется именно на этом аспекте, будет искажать результаты в пользу JVM, но на производительность реальных приложений почти никогда не доминируют затраты на отправку методов.
Я ничего не знаю о CodenameOne, но об общем поведении Java-VM.
Обычно Java-программам требуется больше времени для запуска, из-за того, что промежуточный код байта Java должен быть скомпилирован перед выполнением. Однако во время исполнения виртуальная машина, однако, может выполнять оптимизацию времени выполнения, например, переупорядочивать кодовые блоки, чтобы лучше использовать кэширование CPU и т.д....
Поскольку виртуальная машина может выполнить этот шаг во время выполнения и, таким образом, обладает знаниями, статический компилятор не имеет возможности реально опережать даже оптимизированный код C в разы.
Более старый пример тестов реального мира, сравнивающих C и Java, можно найти для Jake2 (Quake2 портирован на Java).