На нëм говорят можно легко портировать приложения с виндовса на линукс.
На нëм пишут приложения для андроид.
И вирусы на нëм пишут для пк и андроида.
Но я не понимаю где взаимосвязь.
Получается виртуальная машина java встроена в ядро андроида ,и при запуске приложения , виртуальная машина выполняет код этого приложения.
А на компьютере мы компилируем приложения вместе с виртуальной машиной. И когда мы запускаем прилодение, мы сначала запускаем JVM , а потом саму программу.
Java - кроссплатформенный язык прикладного уровня.
Java-код компилируется в байт-код виртуальной машины Java (JVM) и этой виртуальной машиной выполняется. По мере набора статистики работы кода байт-код автоматический "на лету" перекомпилируется встроенным в JVM компилятором (JIT-компиляция) в код процессора и при следующих запусках программы выполняется уже процессорный код - без интерпретатора JVM.
В Android НЕТ JVM. И, собственно, языка Java нет. Есть разработанный Google компилятор языка, очень похожего на Java. Который, в силу похожести, тоже называют Java. Но никакого отношения к оригинальным Java и JVM от Sun/Oracle он не имеет.
У Google в разных версиях Android разный подход к работе виртуальной машины. Были версии, где работа виртуальной машины была похожа на JVM. И были версии, в которых загруженная в смартфон программа сразу компилировалась в процессорный код - перед первым запуском.
<Я правильно понял или нет?>
Не совсем.
Упрощенная схема такая:
программа на языке (собственно текст) компилируется в в байт-код ( .class ), которые, в свою очередь, интерпретируются виртуальной машиной Java (JVM). Теоретически байт-код, созданный одним компилятором Java, должен работать одинаково на любом JVM, даже на другом компьютере или другой операционной системе.
другие языки тоже могут использовать байт-код.
Например на вход компилятора kotlinc поступают исходные файлы, причем не только файлы kotlin, но и файлы java. Это нужно чтобы можно было свободно ссылаться на Java из Kotlin, и наоборот. Сам компилятор прекрасно понимает исходники Java, но не занимается их компиляцией, на этом этапе происходит только компиляция файлов Kotlin. После полученные *.class файлы передаются компилятору javaс вместе с исходными файлами *.java. На этом этапе компилируются все java файлы, после чего становится возможным собрать вместе все файлы в jar (либо каким другим образом).
JVM устанавливается на произвольную ОС (Windows, Linux или Android), на ней запускаются программы, написанные [например] на Java и компилированные в Java-байткод.