Java часто упоминается как более переносимый, чем другие, скажем, скомпилированные языки, поскольку исполняемый файл может быть запущен на любой платформе с помощью JVM. Но код, написанный на C, может быть запущен на любой платформе с компилятором C.Почему интерпретируемый язык считается более портативным?
Итак, наивно существует две альтернативы: создавайте множество разных компиляторов для множества разных платформ и передавайте исходный код по сети, скажем, апплет, который скомпилирован на стороне клиента; или сделать множество разных виртуальных машин для работы на множестве разных платформ и передавать одну и ту же исполняемую программу или апплеты по сетям.
Почему последнее лучше? Я вижу, как желательно компиляция на стороне сервера, но я чувствую, что это больше, чем это. Я могу понять, что Sun Microsystems меньше работает над созданием JVM для многих платформ, чем для компиляторов для многих платформ, но это, безусловно, не было главной мотивацией.
Ваш вопрос несколько запутан. Я всегда могу написать программу 'Java', которая отлично работает в Linux и которая вообще не запускается в Windows. Переносимость - это артефакт программы, учитывая, что на целевой платформе существует соответствующая «runtime» (виртуальная машина или простой старый компоновщик/загрузчик), нет? –
Обе прагмы (компиляция или Runtime-engines) имеют свое преимущество. – jogo