swing czy awt?

Która z tych dwóch bibliotek Javy jest lepsza w użyciu i w jakich zastosowaniach?
Mam do wyboru jedną z nich do przygotowania aplikacji, którą byście mi polecili?
Jakie są plusy i minusy tych dwóch bibliotek?

2 lata, 5 miesięcy temu | edytowane przez: dae 9441629

  • AWT działa tak, że każdy "widżet" w okienku stworzonym przez AWT, czyli np. guziczek, czy pole tekstowe jest tak naprawdę natywnym elementem interfejsu danego systemu. Gdy Java stworzy guziczek AWT to narysuje go system operacyjny, później gdy użytkownik naciśnie guziczek to zostanie to obsłużone przez system operacyjny, który wykona odpowiedniej animacji, np. przerysuje guziczek jako wciśnięty i w końcu wyśle informację o zdarzeniu do kodu w Java'ie. Wadą tego rozwiązania jest po pierwsze to, że trzeba było wybrać pewien skończony zakres "widżetów", który był częścią wspólną wszystkich systemów gdzie miała działać Java, przez to AWT nie ma pewnych przydatnych elementów, komplikuje to też programowanie bo nie zawsze wszystko musi działać tak samo na każdym systemie, wadą jest też to, że mamy tutaj dużo miejsc gdzie konieczna jest komunikacja między systemem operacyjnym, a Java'ą. Aplikacje działające w oparciu o AWT skończyły się tak koło Java'y 1.1-1.2. Swing działa inaczej, tworzy 1 okienko AWT i rysuje w nim swoje własne guziczki, pola tekstowe i co mu tam się jeszcze spodoba. Wtedy gdy użytkownik przyciśnie taki guziczek to system operacyjny poinformuje Java'ę, że użytkownik użył przycisku myszy w tym i tym miejscu ekranu, a Java interpretuje to jako wciśnięcie guziczka Swingowego, przerysowuje go, wywołuje odpowiedni kod i tak dalej. Dzięki temu, że wszystko jest rysowane przez Java'ę to na każdym systemie Swing może dostarczyć identycznych "widżetów", które będą wyglądały tak samo i tak samo się zachowywały, dodatkowo możliwe jest też nadawanie własnego wyglądu wszystkim elementom interfejsu. Teoretycznie powinno to też być szybsze, bo Java musi się rzadziej komunikować z systemem operacyjnym. Rzeczywistość pokazuje, że nie zawsze jest tak różowo ;-)

    Jest jeszcze trzecia droga ;-) czyli SWT, które łączy idee z AWT [czyli jak najbardziej natywną obsługę UI] i Swingowe rysowanie. SWT jest przez to dość szybkie przy jednoczesnym dostarczeniu dość dużej ilości komponentów. Wadą SWT jest to, że nie jest standardowym elementem Java'y i trzeba ze swoim kodem dystrybuować też kod SWT, a tu mogą być kłopoty bo gdy chcesz by Twoja aplikacja była zdolna do pracy w różnych systemach operacyjnych to musisz dystrybuować także elementy natywne. Ze słynniejszych aplikacji w SWT można podać przykład Eclipse'a, którego powstanie jest silnie związane ze stworzeniem samego SWT.

  • Swing jest rozwinięciem awt, jest nowsza. Z reguły pracujesz na obu, bo korzystasz z jakichś podstawowych rzeczy, ale większość to jednak Swing.

  • Tak jak napisał przedmówca - AWT jest "stary" i nie koniecznie jary. Dlatego bierz SWING'a ew. SWT.

  • Ta jak koledzy - SWING. Warto również poczytać o czymś takim jak QT, ale na początek na pewno dobrze jest poznać AWT i SWINGa.

  • Swing, gdyż: - posiada bogatą kolekcję "obiektów" - posiada intuicyjne nazwy - współpracuje z IDE (w Netbeansie - czysta poezja) - jest nowsze od AWT

Zaloguj się, aby dodać swoją odpowiedź