Что из собой представляет язык java и jvm? - Вопросы по Java

Вопрос Что из собой представляет язык java и jvm?

Регистрация
6 Дек 2013
Сообщения
71
Репутация
0
Спасибо
0
Монет
0
На нëм говорят можно легко портировать приложения с виндовса на линукс.

На нëм пишут приложения для андроид.

И вирусы на нëм пишут для пк и андроида.





Но я не понимаю где взаимосвязь.

Получается виртуальная машина java встроена в ядро андроида ,и при запуске приложения , виртуальная машина выполняет код этого приложения.

А на компьютере мы компилируем приложения вместе с виртуальной машиной. И когда мы запускаем прилодение, мы сначала запускаем JVM , а потом саму программу.



Я правильно понял или нет?
 
Регистрация
18 Дек 2013
Сообщения
79
Репутация
0
Спасибо
0
Монет
0
Java - кроссплатформенный язык прикладного уровня.

Java-код компилируется в байт-код виртуальной машины Java (JVM) и этой виртуальной машиной выполняется. По мере набора статистики работы кода байт-код автоматический "на лету" перекомпилируется встроенным в JVM компилятором (JIT-компиляция) в код процессора и при следующих запусках программы выполняется уже процессорный код - без интерпретатора JVM.

В Android НЕТ JVM. И, собственно, языка Java нет. Есть разработанный Google компилятор языка, очень похожего на Java. Который, в силу похожести, тоже называют Java. Но никакого отношения к оригинальным Java и JVM от Sun/Oracle он не имеет.

У Google в разных версиях Android разный подход к работе виртуальной машины. Были версии, где работа виртуальной машины была похожа на JVM. И были версии, в которых загруженная в смартфон программа сразу компилировалась в процессорный код - перед первым запуском.
 
Регистрация
19 Дек 2013
Сообщения
87
Репутация
0
Спасибо
0
Монет
0
"из собой"
руская езыка такой сложны да?
 
Регистрация
28 Июл 2013
Сообщения
79
Репутация
0
Спасибо
0
Монет
0
<Я правильно понял или нет?>
Не совсем.
Упрощенная схема такая:
программа на языке (собственно текст) компилируется в в байт-код ( .class ), которые, в свою очередь, интерпретируются виртуальной машиной Java (JVM). Теоретически байт-код, созданный одним компилятором Java, должен работать одинаково на любом JVM, даже на другом компьютере или другой операционной системе.

другие языки тоже могут использовать байт-код.

Например на вход компилятора kotlinc поступают исходные файлы, причем не только файлы kotlin, но и файлы java. Это нужно чтобы можно было свободно ссылаться на Java из Kotlin, и наоборот. Сам компилятор прекрасно понимает исходники Java, но не занимается их компиляцией, на этом этапе происходит только компиляция файлов Kotlin. После полученные *.class файлы передаются компилятору javaс вместе с исходными файлами *.java. На этом этапе компилируются все java файлы, после чего становится возможным собрать вместе все файлы в jar (либо каким другим образом).
 
Регистрация
3 Июл 2013
Сообщения
86
Репутация
0
Спасибо
0
Монет
0
JVM устанавливается на произвольную ОС (Windows, Linux или Android), на ней запускаются программы, написанные [например] на Java и компилированные в Java-байткод.
 
Сверху Снизу