@BartonFink

Чем создание JVM под конкретные платформы «лучше», «проще», «продвинутее», «правильнее» написания компиляторов под те же платформы?

В книгах и статьях о языке программирования Java всегда говорится о том, что идея компиляции байт-кода, который исполняет строго стандартизованная JVM, решила проблему переносимости, платформонезависимости, программ.
Мол, вместо того, чтобы писать компилятор для каждой платформы, что достаточно сложно и затратно, теперь достаточно написать виртуальную Java-машину для каждой платформы, что, подразумевается, гораздо проще. При этом я ни разу не встречал объяснения: а чем, собственно, проще?:)
  • Вопрос задан
  • 763 просмотра
Решения вопроса 3
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Упрощения для разработчиков инструментальных средств - это тема очень непростая. Намного легче объяснить плюсы с позиции прикладного программиста и пользователей ПО. В 2003-м году я участвовал в разработке одной системы на Java EE. Написанный мной и другими разработчиками код был скомпилирован с помощью Java 1.4, упакован в war и развёрнут на сервере заказчика. Это был сервер с 32-битными процессорами Xeon Prestonia, работавший под управление FreeBSD. Позже это приложение в том же war-файле было перенесено на сервер Fujitsu PRIMEPOWER с процессорами абсолютно иной архитектуры - SPARC, и управляемый очень отличающейся операционной системой - Solaris. Сейчас оно крутится на IBM'овских блэйдах c процами POWER и под управлением AIX, на сколько мне известно. Не удивлюсь, если через некоторое время приложение перенесут на что-нибудь с ARM'ами и под Linux или HP-UX. Все эти миграции выполняются без перекомпиляции и без привлечения разработчиков. Если бы приложение было написано на чём-нибудь вроде C++, код приложения пришлось бы портировать на каждую платформу и перекомпилировать. Это было долго, сложно и очень дорого.
Ответ написан
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
В теории, проще тем, что не нужно каждую программу перекомпилировать под все платформы. Ты получаешь один файл для каждой программы и запускаешь его везде, где есть jvm. Если разработчик программы с закрытыми исходниками не скомпилировал её под твою платформу, то ты эту программу никогда не запустишь.
На практике всё не так радужно, конечно.
Ответ написан
Комментировать
Sputterspark
@Sputterspark
5d258f7036002830560220.png
Чтобы портировать например OpenJDK на любую платформу, потребуется изменить максимум 1% платформозависимого кода. Портирование чего-нибудь вроде GCC требует существенно большего количества работы.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
29 мар. 2024, в 12:59
15000 руб./за проект
29 мар. 2024, в 12:56
1500 руб./за проект
29 мар. 2024, в 12:56
80000 руб./за проект