Ubuntu(Linux) için JRE indirip kurmanız, çalıştırmak için yeterlidir. Lakin yazdığınız program executable olması gerekli direkt olarak o jar'ı çalıştırmak istiyorsanız.
C++ ile QT kütüphanesini kullanarak css giydirebiliyorsunuz arayüz için lakin C++ ile geliştirme yapmak uzun süre alır. Pekte makul bir yaklaşım olmaz development için.
Bir ürün geliştirirken önünüze metrikler almalısınız.
1 - Zaman
2 - Verimlilik
3 - Community (Destek ve kaynak)
Bu kriterler alır başını gider.
Linux kullanmadım şuana kadar. Windows ve Macos kullandım son 5-6 aydırda MacOs bağımlısı oldum. Windows için neyse, MacOs içinde aynı kurulumlar mevcut. Linux içinde aynıdır.
C++ üzerinde neredeyse okul projeleri hariç geliştirme yapmadığım için basit bir google araştırması ile aşağıdaki link'e ulaştım.
http://stackoverflow.com/questions/14721818/c-is-all-of-std-cross-platformLink'teki cevapta C++' ın bazı versiyonlarında standartlar oldukça oturmuş(derleyicilerinde) fakat hepsi için bu geçerli değil. Çünkü eklediğiniz namespace sanırım bu sınıf ve kütüphaneler farklılıklar gösteriyor buda bu bağımsızlığı öldürüyor.
Java yüksek seviye dildir. Geliştirmesi C++'A göre oldukça hızlıdır ek olarak birde C++ ' ta kod yığını arttıkça varolan yazılım dizaynına hakimiyetide zorlaştırır. Mesela inheritance(kalıtım)'ı birden çok sınıftan alması mükemmel bir özelliktir lakin aynı zamandada bir dezavantajdır. Çünkü ambiguity(belirsizlik) yaratır. Şöyle düşünün.
A,B ve C sınıfınız var ve bu sınıflar hepsinde m,a,b gibi metodlarınız bulunuyor.
A sınıfı B ve C sınıfından inheritance(kalıtım)'ı alabilir ve metodlarını koşturabilir. Hangi sınıfta hangi metodu koşturması kısmında iyi bir dizayn yapmalısınız, iyi sınıf ve metod isimleri kullanmalısınız ve kalıtımı alan sınıflardan hangisini koşturduğunu iyi bilmelisiniz. Ve unutmayın ki projeye yarın başka biri dahil olduğundada bunu anlaması gerekmektedir.
Bu büyük bir avantajdır lakin iyi dizayn yoksa dezavantaja dönüşen bir özelliktir. Programlama dillerine dair çok şey yazılır dostum ama tavsiyem yüksek seviye dillere haşır neşir olmanız çünkü geliştirilmesi hızlıdır ve dolu kütüphaneleri mevcuttur.
Java yad C#'ı öneririm ama bu seçimdede Java bana göre her halukarda ağır basar ;)