Не совсем везде она работает. Точнее, есть несколько вариантов Java: - Стандартная Java для компьютера. Работает на всех компьютерах и серверах. - Java для Андроид. Это нестандартная Ява. Тот же язык, но совместимости нет, поскольку другие библиотеки и нестандартная виртуальная машина. - Java ME (Micro Edition) для мобильных телефонов (не смартфонов) и прочих устройств со слабыми вычислительными ресурсами. - Java Card. Для смарткарт и т. п. устройств. Есть и другие языки на которых можно писать кроссплатформенные приложения: C#, Python, JavaScript. Виртуальную машину надо писать не только под каждую ОС, но и под каждую архитектуру процессора.