Jaki język do między platformowych aplikacji GUI?

0

Witam, i mam nadzieję, że piszę w odpowiednim dziale :)

Do tej pory używałem Java + Swing i ten duet sprawował sie dobrze. Na Windowsie GUI wyglądają jako tako, to na Linuksie jest masakra. GTK L&F jest zabugowany a Metal L&F - ochydny. Więc właśnie - jaki język i jaki toolkit powinienem wykorzystać do tworzenia aplikacji okienkowych?

Na razie rozważam:

  • Java + SWT - Wszyscy go chwalą za natywne kontrolki, ale i tak wiele z nich jest emulowanych
  • Java + QT Jambi - QT w Javie? Brzmi ciekawie (ot, jaki rym :)) Nie widziałem jednak do tej powy aplikacji do wykorzystujących i nie wiem jak to się ma w praktyce
  • Python + PyGTK / PyQt + Py2Exe - Też ciekawy zestaw jednak nie wiem jak to będzie z wydajnością.

Czekam na odpowiedzi.

0

Java+SWT to niezły wybór, ponieważ nie wiele kontrolek jest emulowanych (założeniem było wyjście od Win) i zazwyczaj emulowane są na Macach. Wada to konieczność dystrybucji "pod system".
Java+QT - zły pomysł. Jambi ładnie wygląda na papierze, ale w praktyce nie za bardzo.

o pythonie się nie wypowiadam bo nie znam. Zresztą rzuć okiem na Battle for Wesnoth to zobaczysz jak jest z wydajnością.

0
sznurek napisał(a)
  • Python + PyGTK / PyQt + Py2Exe - Też ciekawy zestaw jednak nie wiem jak to będzie z wydajnością.

Czekam na odpowiedzi.

Bawiłem się tylko z Python + PyGTK. Wygląd taki jak oferuje GTK (wliczając w to wszystkie themsy itp.) Jeżeli chodzi o wydajność, to nie miałem najmniejszych problemów. Jeżeli rozważasz użycie Javy (czyli wydajność nie jest krytycznym czynnikiem), to Python powinien Cię również zadowolić. Nie jest znacznie wolniejszy, a do GUI nie trzeba jakiś rakiet. Jeżeli masz jakieś fragmenty kodu typowo obliczeniowe, to możesz użyć psyco lub nawet szybko napisać "bibliotekę w C" w pyrex.

O javie się nie wypowiadam, bo niewiele gui w tym pisałem (większość ręcznie, więc nie było to tak wygodne jak np. glade).

0
sznurek napisał(a)

Na Windowsie GUI wyglądają jako tako, to na Linuksie jest masakra. GTK L&F jest zabugowany a Metal L&F - ochydny.

Jeśli nie odpowiada Ci L&F linuksowy nie ma problemu, możesz sobie ustawić dowolny inny.

Ja używam TinyLaF http://www.muntjak.de/hans/java/tinylaf

Dorzucasz jara do projektu i ustawiaszL&F (najlepiej w main):

  try {
          UIManager.setLookAndFeel("de.muntjak.tinylookandfeel.TinyLookAndFeel");                                        
       } catch (UnsupportedLookAndFeelException ex) {
          ex.printStackTrace();                   
       }                
Dryobates napisał(a)

O javie się nie wypowiadam, bo niewiele gui w tym pisałem (większość ręcznie, więc nie było to tak wygodne jak np. glade).

W Netbeans 6.0 można bardzo fajnie projektować GUI. W połączeniu z Beans Binding można bardzo szybko tworzyć rozbudowane interfejsy.

0

Dziękuję wszystkim za odpowiedzi, ale najbarzdiej polubię sie chyba z SWT :) Zacznę w nim jakiś mało-średni projekt(~2-3 mies.) i zobaczymy jak to będzie :)

0

Jest jeszcze wxWidgets - w Windows praktycznie wszystkie kontrolki natywne, w Linuksie (wxGtk) - natywne GTK.

Nie zauwazylem zeby cokolwiek bylo emulowane. No moze jedynie TabControl pod Windows ale wyglada tak samo.

0

Ja bym Ci polecał jednak Swinga + jakiś ładny L&F. Metal jest ohydny, zgadzam się całkowicie. Windows L&F w Javie 6 jest praktycznie nie odróżnienia od natywnego. Natomiast bardzo przypadł mi do gustu LipstikLF - wygląda bardzo profesjonalnie i lekko zarazem. Działa na każdym systemie.

Pamietaj że SWT nie jest "pure Java" i dosyć mocno zależy od bibliotek zainstalowanych w systemie użytkownika. Może nie jest to jakaś duża wada, ale ogranicza nieco przenośność. Jeśli Eclipse mi się wywala (a wywalił mi się nie raz), to ZAWSZE przez błędy w natywnych bibliotekach GTK (lub błędy użycia GTK przez SWT, nie wnikałem), a nie w JVM. Swing chodzi o wiele stabilniej.

Poza tym użytkownicy w większości wcale nie dbają o to, by aplikacja wyglądała TAK SAMO jak reszta aplikacji na danej platformie. Ma wyglądać ŁADNIE i być UŻYTECZNA. Pod tym względem Swing daje dużo większe mozliwości niż SWT. Więcej o tym tu: http://www.osnews.com/story.php/10633/The-Java-Look-and-Feel-Debate/

0

No tak, zgoda Swing ładnie wygląda na Windowsach a przy odrobinie wysiłku i na Linuksie. Jeszcze jedna rzecz - okna dialogowe(color choosery, file choosery itd.). Na SWT mam je natywnie i w języku użytkownika. W Swingu komunikaty są po angielsku. Słyszałem, że da je sie przetłumaczyć (System.setProperty czy UIManager.setProperty), ale gdy we wszystkich moich aplikacjach mam file choosera z GTK to nie jestem zadowolony gdy wyskoczy mi ten z QT ;/ Tak samo jest ze Swingiem.

Próbowałem uzyskać natywne dialogi przez AWT, ale na Linkuksie jest używany GTK 1 ;/

Pisze ciągle file choosera bo "wybierzacz plików" brzmi jakos dziwnie, a "okno dialogowe wyboru pliku" jest za długie :)

W między czasie uczę się pythona ale brakuje mi kontroli typów ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1