Переносимость
Основным вопросом для разработчиков Java стал вопрос продолжительности и переносимости. Одна из главных проблем, с которой встретились программисты, заключалась в отсутствии гарантий того, что написана сегодня программа завтра будет работать с тем же успехом, причем на той же машине. Обновление операционной системы, модернизация процессора то изменение объема оперативной памяти могут привести к сбою программы. Разработчики Java, стремились изменить эту ситуацию и приняли несколько тяжелых решений относительно языка Java и процессу выполнения Java-программы. Их цель заключалась в том, чтобы «однажды написанное работало везде, в дорогое время и всегда». Вследствие этого Java является системой, которая легко расширяется за счет создания новых стандартных классов и библиотек.
Преимущества интерпретированной в сочетании с высокой производительностью.
Как уже вспоминалось, Java позволяет создавать независимые от платформы программы путем компиляции в промежуточное представление, которое называется байткодом. Много предыдущих попыток знать решение проблемы независимости от платформы были сделаны за счет производительности. Интерпретирующие системы, подобные к BASIC", Perl, страдают на почти непреодолеваемый дефицит производительности. Это было учтено при создании Java. Невзирая на то, что Java является интерпретированным языком, генерация байткодив была тщательным образом оптимизирована таким способом, чтобы получаемый байткод, можно было легко переводить в машинный код, который работает с очень высокой производительностью. Выполняющие системы такого рода не теряют никаких преимуществ переносимого кода.
