Нужно ли знать ОС программисту Java?
Да, нужно! Как минимум нужно общее представление. Так как любая программа выполняется в окружении операционной системы.
Взять серверную часть. У вас не просто запускается tomcat/jboss/jetty/что-то-там-еще. У вас скорее всего стоит база данных, прокси-сервер. Есть мониторинг, оркестрация, сети... все это сильно зависит от операционной системы, настроек, прав доступа. Если в этом совсем ничего не понимать, то простые ошибки, типа занятого порта или лимита на открытые дескрипторы, можно искать днями.
В результате, и тесты проходят, и все работает, а нагрузку не держит! Или крашится с непонятным результатом.
Я уж не говорю про десктопные приложения, утилиты, cli и gui.
Если хотите делать реально переносимые приложения, придется немного глубже копать, чем ява.
Ну и пример. Сейчас пишу, да-да, аудиоплеер с биндингом к gstreamer. Разрабатываю на маке, отлаживаю в линуксе, а целевая система - на arm с armbian. Как-то так.
Зависит от ваших профессиональных задач и карьерных целей. Проводя аналогию с вождением автомобиля: Если ваша задача - каждый день проезжать 10 км по одному и тому же городскому маршруту на малолитражке, то достаточно знать как крутить руль и нажимать две педали, а если вы хотите победить в ралли "Дакар", то без знания внутреннего устройства автомобиля не обойтись. Java-перформансникам, например, знать нужно не только ОС, но и железо с ассемблером.