Когда пользуешься линуксом, и находишь программу написанную на Java, начинаешь понимать, насколько важна кроссплатформенность. Люди, которые пользуются двумя системами (Windows, Linux), могли бы иметь меньше проблем с переходом между системами. Дизайн на Java может быть таким же сексуальным, как и современные программы (Intellij IDEA, Eclipse написаны на Java).
В последнее время выпускаются хорошие фишки в Java SDK от Oracle.
Почему, когда пишут оконную программу на Java - это плохо?
Сначала объясню на примере есть программа на джаве SweetHome 3D - программа полезная, но создавая весьма примитивную графику вы очень быстро утыкаетесь в её медлительность на среднем железе, хотя казалось ничего сверхествственного она не делает, переписанная на Си эта программа с тем же качеством могла уверенно работать на четырёхятедном атоме со встроенной графикой, сейчас же запустить её на атоме - это боль.
Помимо примера скажу, что переносимость проги на джаве вообще-то фуфня, т.к. с годик назад я узнал что одна прога которая мне нужна была на 8-ой джаве, ещё одна на 7-ой, установленные были на 9-ой или 10-ой, т.е. ради по сути пяти маленьких программ мне пришлось подтянуть не столь уж переносимые джава-среды, более того, что мне делать, если я разрабатывал на javafx, а тут оказывается что в новых выпусках её не хотят разрабатывать, т.е. я остаюсь на старой джаве, откуда следует мысль, что переносимость джавы по сути только на словах, да и вам никто не запрещает компилируемую программу поставлять с исполнимыми файлами для разных систем - распаковываете и запускаете свой, т.к. универсальный инструментарий для этого есть, да даже если бы они поставлялись отдельно какая была бы для вас разница ? вам в любом бы случае пришлось бы доставать-скачивать эту программу и какая разница, если вы скачаете себе на вашу систему выпуск для вашей системы, который к тому же будет быстрее, работать на атоме и иметь более приятный интерфейс и т.д.
Т.е. в конечном счёте джава не даёт той переносимости, т.к. например в большинстве джава-программ, в которых в какой-то момент поняли что всё плохо и им нужна худо-бедно но производительность они пришли к тому, что стали использовать jni и поставляют получается не переносимые программы к тому же привязанные к какой-то версии джавы - и где тут удобство, где хвалёная переносимость ? Она в целом есть но только для задач, которые умещаются в возможности стандартной библиотки, про всё что вне неё говорить уже не приходится... Да и кстати вас не смущает ? Ну то, что перечичленные вами программы предлагают при скачивании сборки для разных ОС и обычно всего 3-ёх, так где переносимость ?, Почему я должен всё равно джаву каждый раз устанавливать или ставить очередное обновление или другой старый выпуск джавы ? - собственно потому и плохо писать приложения на джаве - вы жертвуете производительностью, внешним видом, получаете ограниченный язык и в обмен получаете возможность переносить программы очень узкого спектра в духе сетевых приложений или простых интерфейсов... хотя и тут могут быть затыки из существующих достоинств, это то, что правки в такое ограниченное приложение не будут вынуждать вас заниматься кроссборкой или сборкой в другой среде-ОС, но и тут для того же си нет проблем, т.к. можно настроить кросскомпиляцию которая будет сама и без особых проблем собирать вам приложения как на линуске под винду, так и на винде под линукс