Mam bardzo duży program, który obecnie używa SWT. Program może być uruchamiany zarówno w systemie Windows, Mac, jak i Linux, i jest to duża aplikacja komputerowa z wieloma elementami. Teraz, gdy SWT jest nieco stary, chciałbym przejść na Swing lub JavaFX. Chciałbym usłyszeć wasze przemyślenia na temat trzech rzeczy.
Moje główne obawy dotyczą tego, co będzie lepsze dla aplikacji graficznego interfejsu użytkownika? (Szukałem w Internecie i wiele osób sugeruje, że JavaFX jest tak samo dobry jak Swing, ale nie widziałem wielu ważnych argumentów poza zwykłymi wojnami o opinię). Musi działać zarówno w systemie Windows, Mac, jak i niektórych popularnych dystrybucjach Linuksa.
Co będzie czystsze i łatwiejsze w utrzymaniu?
a co szybciej zbudować od zera?
W mojej aplikacji korzystam z metodologii MVC, jeśli jest to pomocne.
Odpowiedzi:
Wszystkie rzeczy są równe, prawdopodobnie JavaFX - interfejs API jest znacznie bardziej spójny między komponentami. Zależy to jednak znacznie bardziej od sposobu pisania kodu , niż od biblioteki używanej do jego napisania .
Bardzo zależy od tego, co budujesz. Swing ma do dyspozycji więcej komponentów (zarówno firm zewnętrznych, jak i wbudowanych) i nie wszystkie z nich dotarły jeszcze na nowszą platformę JavaFX, więc może być pewne wymyślenie na nowo koła, jeśli potrzebujesz czegoś nieco niestandardowy. Z drugiej strony, jeśli chcesz robić przejścia / animacje / wideo, w FX jest to rząd wielkości.
Inną rzeczą, o której należy pamiętać, jest (być może) wygląd. Jeśli absolutnie musisz mieć domyślny wygląd systemu, JavaFX (obecnie) nie może tego zapewnić. Nie musi być dla mnie zbyt duży (i tak wolę domyślny wygląd efektów), ale wiem, że niektóre zasady wymagają ograniczenia stylów systemowych.
Osobiście widzę JavaFX jako „i najbliższych” biblioteki UI to nie całkiem tam jeszcze (ale więcej niż użytkowej), a Swing jako biblioteki UI borderline-dziedzictwo, które jest w pełni funkcjonalny i obsługiwanym przez chwilę, ale prawdopodobnie nie będzie tyle w nadchodzących latach (i dlatego są szanse, że FX w pewnym momencie ją wyprzedzi).
źródło
Jak twierdzi Oracle, JavaFX jest kolejnym krokiem w strategii bogatych klientów opartych na Javie. W związku z tym polecam w twojej sytuacji:
Aby uzyskać więcej informacji, zapoznaj się z postem FAQ Oracle dotyczącym JavaFX tutaj.
źródło
Nikt nie wspomniał o tym, ale JavaFX nie kompiluje się ani nie działa na niektórych architekturach uznanych przez Oracle za „serwery” (np. Solaris), z powodu braku obsługi „jfxrt.jar”. Trzymaj się SWT, aż do odwołania.
źródło
Nie sądzę, aby istniała jakaś prawidłowa odpowiedź na to pytanie, ale radzę trzymać się SWT, chyba że napotkasz poważne ograniczenia, które wymagają tak poważnego przeglądu.
Ponadto SWT jest w rzeczywistości nowszy i bardziej aktywnie utrzymywany niż Swing. (Został pierwotnie opracowany jako zamiennik dla Swinga przy użyciu natywnych komponentów).
źródło
Rozejrzałbym się w poszukiwaniu elementów (firm trzecich?), Które robią, co chcesz. Musiałem utworzyć niestandardowe komponenty Swing dla widoku planu, w którym można zarezerwować wiele zasobów, a także siatkę podobną do programu Excel, która działa dobrze z nawigacją za pomocą klawiatury i tak dalej. Miałem okropny czas, żeby ładnie działały, ponieważ musiałem zagłębiać się w wiele zawiłości Swinga, ilekroć napotkałem problem. Zachowanie myszy i ostrości oraz wiele innych rzeczy może być bardzo trudnych do uzyskania, szczególnie dla zwykłego użytkownika Swinga. Mam nadzieję, że JavaFX jest nieco bardziej zorientowany na przyszłość i gotowy do pracy po wyjęciu z pudełka.
źródło
Na starszych notebookach ze zintegrowaną aplikacją wideo Swing uruchamia się i działa znacznie szybciej niż aplikacja JavaFX. Jeśli chodzi o programowanie, polecam przejście na Scala - porównywalna aplikacja Scala Swing zawiera 2..3 razy mniej kodu niż Java. Jeśli chodzi o Swing vs SWT: Netbeans GUI jest znacznie szybszy niż Eclipse ...
źródło