Если я скомпилирую приложение на java под windows, то оно запустится на линукс?
Если я скомпилирую приложение на java под windows, то оно запустится на линукс без изменений? а на macos? какие проблемы кроссплатформенности есть вообще у java на данный момент?
Приложение на Java компилируется (компилятором, входящим в состав JDK) не под платформу, а в байткод, который потом загружается и выполняется виртуальной машиной Java (JRE) на любой платформе, где она, эта машина, есть. Соответственно, в общем случае, нет никакой разницы, где компилировать, а где потом выполнять, и у самой Java никаких проблем кроссплатформенности нет и никогда не было. Но такие проблемы, конечно, бывают сплошь и рядом у криворуких программистов, использующих в коде какие-то специфические для конкретной платформы вещи - от жестко зашитых делимитеров в путях файлов и до конкретных системных API, dll и пр.