2013-04-23 16 views
8

Mam doświadczenie w programowaniu w Internecie (php, jsf, ...) i minimalnym tle z swingiem i swt.Java FX: deklaratywny kontra proceduralny

Obecnie patrzę na java fx 2.x dla nowej aplikacji desktopowej i zastanawiam się, jakie są najlepsze praktyki dotyczące budowania rzeczywistego GUI. Mógłbym przejść deklaratywną trasą z fxml lub przejść procedurę proceduralną. Obecnie dla szybkiego prototypowania robię to drugie, ale zastanawiałem się, czy istnieją istotne powody, aby używać fxml.

UPDATE

W końcu poszedłem trasę FXML dla średniej wielkości projektu i chociaż beta scena budowniczy nadal jest nieco niestabilny w moim systemie linux, to okazał się znacznie lepszy od oryginalny prototyp proceduralny. Zdecydowanie największą zaletą jest to, że wiele elementów (szczególnie hbox, vbox, etykiety, tabulatory, ...) nie zakłóca już mojego kodu, ponieważ istnieją one tylko w fxml.

Odpowiedz

12

Oracle Zalecenia

Zobacz porady Oracle:

  1. Why use FXML
  2. Implementing JavaFX Best Practices

Oracle Niepolecane FXML dla definicji layoutu nad API Java.

Alternatywne deklaratywne Technologie dla JavaFX

Pozostałe deklaratywne sztuk w JavaFX są CSS i 3D models

pół-deklaratywnej metodą jest JavaFX Builder API, ale może chcesz uniknąć jak the builder api will be deprecated in future JavaFX versions. Dodatkowo, jeśli programujesz w innych językach, niektóre z nich zawierają deklaratywny język specyficzny dla domeny (DSL) do programowania JavaFX (np. ScalaFX lub GroovyFX).

Generalnie użycie deklaratywnej składni przeważyło przede wszystkim nad programowaniem proceduralnym dla większości zadań związanych z oznaczaniem interfejsu użytkownika. To być postrzegane przez wyeksponowany technologii, takich jak HTML, CSS, FXML, XAML, MXML, XUL, itp

Niski poziom programowania

Do zadań niskopoziomowych, takich jak rozwój niestandardowej kontroli JavaFX, manipulując płótnem JavaFX lub przetwarzając dane obrazu, procedura Java API jest bardziej odpowiednia niż użycie deklaratywnego FXML - żaden z JavaFX codebase in openjfx nie używa FXML.

osobistych wyborów i porady

W końcu, nie ma dobrej odpowiedzi tutaj. Wybór zależy od tego, który deweloper wybierze najlepsze podejście.

Nie ma również powodu, dla którego nie można mieszać dwóch stylów, jak uważasz za stosowne. Użycie prostej deklaratywnej metody daje ci bardzo sztywny interfejs użytkownika (np. Statyczną stronę html), w porównaniu z czymś, co miesza zarówno procedury proceduralne, jak i deklaratywne (np. Html + javascript + ajax) - i to samo dotyczy JavaFX, ponieważ jest to do rozwoju html w tym przypadku.

Dla małych programów lubię po prostu pisać jakiś kod w IDE, kompilować i uruchamiać go bez konieczności radzenia sobie z przełączaniem kontekstu między FXML i kodem Java opartym na XML. Odkryłem jednak, że to podejście wyłącznie proceduralne nie jest łatwe do zastosowania w większych projektach. Widok podzielony na FXML pomaga wymusić rozdzielenie obaw i modularyzację. Zbyt łatwo jest połączyć te opinie i obawy logiczne bez sztucznej separacji, której wymaga FXML.

Nie lubię XML jako języka układu interfejsu użytkownika. Myślę, że już nieistniejący format FXD z przestarzałego oddziału JavaFX 1.x był o wiele lepszy. Jednak FXML jest najbardziej dostępną i powszechnie stosowaną deklaratywną składnią interfejsu użytkownika dla JavaFX 2.

Używam CSS z programami JavaFX i lubię używać go zarówno z kodem deklaratywnym FXML, jak iz kodem proceduralnym Java API. Moim zdaniem, tak samo ważne jest oddzielenie stylu od kodu, jak i oddzielenie układu od kodu.

Używając CSS, najlepiej jest umieścić style w osobnym arkuszu stylów niż wstawiać style w kodzie.

Jak wskazano w innej odpowiedzi, narzędzie do projektowania wizualnego JavaFX SceneBuilder obecnie działa tylko z FXML i, oprócz innych rzeczy poza tym, jest wystarczającym powodem dla wielu do używania FXML do zdefiniowania ich interfejsu JavaFX.

2

Moja przyczyna użycia fxml polega na tym, że może on być generowany przez Scene Builder. Nie chcę ręcznie układać układów ...

2

Jeśli oddzielasz układ (FXML) od kodu aplikacji, szansa jest większa, ponieważ możesz poprosić niektórych facetów UX, aby popracowali nad układem za pomocą SceneBuilder tylko zamiast wymagać od nich całego IDE.

1

Mimo to program SceneBuilder nie jest jeszcze gotowy do pracy z nim. Musimy wrócić do FXML w rozdaniu po szczegóły, a to nie jest dobre.

I kilka drobnych błędów w SceneBuilder z dużym i szczegółowym plikiem FXML.

Oracle musi zaktualizować program SceneBuilder dla zdrowia JavaFX! Ponieważ jest bardzo dobrym narzędziem!

Powiązane problemy