Na co dzień jestem programistą WWW i myślę o stworzeniu mojej pierwszej prawdziwej aplikacji komputerowej. Chodzi o to, aby zbudować narzędzie, które automatyzuje bardzo powtarzalne zadanie w aplikacji internetowej, w której nie jest dostępny interfejs API.
Wiem, że chcę używać Javy. Używałem go wcześniej do rzeczy internetowych, znam całkiem dobrze składnię i chcę, aby aplikacja była tak łatwa, jak to tylko możliwe.
Nie jestem pewien, czy powinienem używać SWT czy Swing. Ponieważ moi główni odbiorcy korzystają z systemu Windows, chcę tam wyglądać jak najbardziej natywnie. Linux i Mac powinny działać, ale wygląd nie jest tutaj ważny.
Jakie są więc argumenty za i przeciw każdej strukturze UI, Swingowi lub SWT?
Dzięki.
PS: Tworzę na Windowsie używając Eclipse. Ale myślałem o zabawie z Netbeans.
Odpowiedzi:
Plusy Swing:
Wady Swing:
Plusy SWT:
Wady SWT:
źródło
Ważną rzeczą do rozważenia jest to, że niektórzy użytkownicy i niektórzy sprzedawcy (Dell) instalują 64-bitową maszynę wirtualną na swoich 64-bitowych systemach Windows i nie można używać tej samej biblioteki SWT na 32-bitowych i 64-bitowych maszynach wirtualnych.
Oznacza to, że będziesz musiał dystrybuować i testować różne pakiety w zależności od tego, czy użytkownicy mają 32-bitową, czy 64-bitową maszynę wirtualną Java. Zobacz ten problem na przykład z Azureusem, ale masz go również z Eclipse, gdzie na dzień dzisiejszy kompilacje na pierwszej stronie pobierania nie działają na 64-bitowej maszynie wirtualnej.
źródło
huśtawka pro:
Ale na koniec nie sugerowałbym używania „czystego” swing lub swt ;-) Istnieje kilka frameworków aplikacji do swing / swt out. Spójrz tutaj . Największymi graczami są netbeans (swing) i eclipse (swt). Innym fajnym szkieletem może być griffon, a fajnym „zestawem komponentów” jest pivot (swing). Griffon jest bardzo interesujący, ponieważ integruje wiele bibliotek, a nie tylko swing ; również pivot, swt itp
źródło
Używałbym Swinga z kilku powodów.
Jest na rynku dłużej i poświęcono mu więcej wysiłku rozwojowego. W związku z tym jest prawdopodobnie bardziej kompletna i (być może) ma mniej błędów.
Istnieje wiele dokumentacji i innych wskazówek dotyczących tworzenia wydajnych aplikacji.
Jeśli chcesz zbudować bardzo bogatą w funkcje aplikację, możesz sprawdzić NetBeans RCP (Rich Client Platform). Jest krzywa uczenia się, ale dzięki niewielkiej praktyce możesz szybko stworzyć fajne aplikacje. Nie mam wystarczającego doświadczenia z platformą Eclipse, aby dokonać prawidłowej oceny.
Jeśli nie chcesz używać całego RCP, NetBeans ma również wiele przydatnych komponentów, które można wyciągnąć i używać niezależnie.
Jeszcze jedna rada: przyjrzyj się różnym menedżerom układów. Podkręciły mnie na długi czas, kiedy się uczyłem. Niektórych z najlepszych nie ma nawet w standardowej bibliotece. MigLayout (zarówno Swing i SWT) i JGoodies Formy narzędzi są dwie z najlepszych moim zdaniem.
źródło
Wybrałbym swing tylko dlatego, że jest „natywny” dla Java.
Ponadto spójrz na http://swingx.java.net/ .
źródło
Dla twoich wymagań wydaje się, że najważniejsze będzie użycie Swinga, ponieważ jest nieco łatwiejszy do rozpoczęcia i nie jest tak ściśle zintegrowany z natywną platformą jak SWT.
Swing jest zwykle bezpiecznym zakładem.
źródło
Interesujące pytanie. Nie znam SWT zbyt dobrze, żeby się nim chwalić (w przeciwieństwie do Swing i AWT), ale oto porównanie zrobione na SWT / Swing / AWT.
http://www.developer.com/java/other/article.php/10936_2179061_2/Swing-and-SWT-A-Tale-of-Two-Java-GUI-Libraries.htm
A oto strona, na której można pobrać samouczek dotyczący praktycznie wszystkiego na SWT ( http://www.java2s.com/Tutorial/Java/0280__SWT/Catalog0280__SWT.htm )
Mam nadzieję, że podejmiesz właściwą decyzję (jeśli są dobre decyzje w kodowaniu) ... :-)
źródło
Jeśli planujesz zbudować w pełni funkcjonalne aplikacje z więcej niż kilkoma funkcjami, zasugeruję od razu użycie Eclipse RCP jako ramy.
Jeśli Twoja aplikacja nie będzie zbyt duża lub Twoje wymagania są zbyt wyjątkowe, aby mogły być obsługiwane przez normalne środowisko biznesowe, możesz bezpiecznie przejść z Swing.
Pod koniec dnia proponuję wypróbować obie technologie, aby znaleźć tę, która bardziej Ci odpowiada. Podobnie jak Netbeans vs Eclipse vs IntelliJ, nie ma tutaj absolutnie poprawnej odpowiedzi, a oba frameworki mają swoje wady.
Pro Swing:
Pro SWT:
źródło
Jedna rzecz do rozważenia: czytniki ekranu
Z pewnych powodów niektóre komponenty Swing nie działają dobrze podczas korzystania z czytnika ekranu (i Java AccessBridge dla Windows). Wiedz, że różne czytniki ekranu powodują różne zachowania. Z mojego doświadczenia wynika, że SWT-Tree działa o wiele lepiej niż Swing-Tree w połączeniu z czytnikiem ekranu. W ten sposób nasza aplikacja wykorzystywała zarówno komponenty SWT, jak i Swing.
W celu dystrybucji i ładowania odpowiedniej biblioteki SWT, ten link może okazać się przydatny: http://www.chrisnewland.com/select-correct-swt-jar-for-your-os-and-jvm-at-runtime-191
źródło
SWT powstał jako odpowiedź na powolność Swinga na przełomie XIX i XX wieku. Teraz, gdy różnice w wydajności stają się pomijalne, myślę, że Swing jest lepszą opcją dla standardowych aplikacji. SWT / Eclipse ma ładną strukturę, która pomaga w wielu kodach kotłów.
źródło