Несколько доводов в пользу того, что она не нужна:
1) используя обычный компилируемый язык вроде C++, можно проверять в коде текущую среду исполнения и, в зависимости от неё, использовать те или иные переменные или функции (да, это некоторая морока, но это реализуемо);
2) когда возникает нужда обратиться к специфичным API-функциям (а она возникает), часть кода в "кроссплатформенном" приложении всё равно приходится делать платформо-зависимой;
3) с ходу Java не решает проблем с различным отображением элементов UI на разных системах (с этим по-прежнему остаётся ещё много возни);
4) для запуска Java-приложения необходимо, чтобы джава была установлена у пользователя в системе,
5) чтобы не морочить пользователю голову непонятными jar-ами, приходится создавать лаунчер под конкретную программную/аппаратную среду
У меня есть подозрение, что на эти доводы найдутся какие-то контраргументы, и кто-нибудь мудрый таки расскажет мне, ради чего стоит городить весь этот огород с виртуальными машинами и swing'ом.
1) только вот C/C++ софт придётся компилировать самому под все целевые платформы;
2) платформо-зависимые части кода в большинстве случаев уже собраны в библиотеки;
3) JavaFX или собственная реализация Swing UI. Даже голый Swing причесать так, чтобы он выглядел практически одинаково на всех платформах, особого труда не составит;
4) то же с .net (то, что Microsoft пихает его рантайм в Windows — не заслуга дотнета как такового. А заодно поинтересуйтесь, как у дотнета обстоят дела со стабильностью API);
5) с джарами и не бывает возни, достаточно установить JRE.
В общем, вы просто не умеете готовить кошек^W кофе o)
Мне кажется, отцы-основатели под кроссплатформенностью подразумевали что-то более низкоуровневое, нежели операционная система. Архитектуры процессоров, например, или файловые системы и т.п. Так вот JVM позволяет не париться на счет этих вещей. Код написанный и скомпилированный один раз, запускается везде (где есть JVM). Это все конечно общие случаи и есть примеры, когда это не работает. Тот же Android. Вы не можете запустить приложения, написанные под Android на своем MacBook, например. Но это уже совсем другая история...