Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 месяцев назад.
ЖЦ программы на джаве. Вот есть код, написанный разрабом, с расширением .java. этот файл компилится в файл с расширением .class при помощи javac, потом запускается при помощи java (реализация JVM).
Почему существуют JVM под разные платформы мне понятно - байт-код (промежуточный код) должен скомпилиться в машинный код конкретной ОС.
Но объясните мне, пожалуйста, зачем нужны реализации компилятора javac под разные ОС?
Что, если бы javac был написан только под винду, то прогать смогли бы только на винде, а вот запускать на любой ОС, так как JVM написана под все платформы.
Вот я не понимаю, ведь исходный код один и тот же, что на винде, что на маке, что на линуксе, бай-код тоже одинаковый. Так зачем javac под разные платформы?
Я примерно понимаю, что это зависит от того, что сам javac не запустится, если был написан под мак на винде, например, но как это правильно сказать, чтобы точно разобраться?
Вы от части правы, если были бы только читстые функции, однако jvm и ее основная идея это абстракция именно над операционной системой, т.к. есть ввод, вывод, работа с потоками итд.
Во всех операционных системах это все устроено по-разному и занимается этим именно ОС.
Если вы полезете в исходники то увидите что все платформо-зависимые куски изобилуют вызовами функций ОС.
Продвижение своими сайтами как стратегия роста и независимости