Те же открытые исходники и так гарантируют переносимость - так что самый большой плюс отпадает.
увы, но очень плохо гарантируют. переносимость исходников дело весьма муторное. из-за разных особенностей платформы код обрастает тоннами #define и другими костылями. а красивое и правильное кроссплатформенное ПО большинство разработчиков писать не умеет.
А не то же самое мы имеем с разными версиями Java + разные версии установленных библиотек?
Вон Java в Андроиде так просто бинарно не совместима с остальными - за что Oracle на него и наезжает ИМХО...
Или попробуй Eclipse под gcj пускануть - тоже то ещё веселье.
И про неумение разработчиков писать «красивое и правильное ПО» - дык это от языка не зависит.
в мобильных, да и не только, виртуальная машина проще и производительнее для многозадачности. ведь одно из самых дорогостоящих операций процессора - это переключение между задачами, с сохранением и восстановлением всех значений регистров. в случае с виртуальной машиной, всё прикладное ПО работает внутри контейнера, и для процессора он является лишь единственно запущенным в текущий момент процессом.
это верно, конечно же, при условии нормальной реализации.
Как-то всё в куче...
Ежели ВМ (виртуальная машина) не использует процессорные средства многопоточности, получится в лучшем случае кооперативная многозадачность - та, что была в Win 3.x и любой поток с тяжелыми вычислениями или вводом/выводом застопорит всю остальную ВМ.
А ежели использовать - дык непонятен профит от ВМ - те же переключения с сохранением/восстановлением + накладки виртуализации.
В многозадачке Java может выиграть только одним - у неё есть ключевое слово synchronized и базовая поддержка в стандартной jre. Т. е. не особо задумываясь можно быстро написать многопоточный код.
При этом не доступно тонкое управление потоками какое есть в некоторых ОС-ях.
Например, попробуй стандартными средствами задать размер стека потока или приоритет.
Так что грамотный код на нативных языках будет всяко производительнее.
Хотя и напортачить при этом легче.
К тому же самая быстрая ВМ заточенная на многозадачность не JVM а машина Erlang-а.