[java] 데스크탑 애플리케이션을위한 Swing vs JavaFx [닫기]

현재 SWT를 사용하는 매우 큰 프로그램이 있습니다. 이 프로그램은 Windows, Mac 및 Linux 모두에서 실행할 수 있으며 많은 요소가있는 큰 데스크탑 응용 프로그램입니다. 이제 SWT가 다소 오래되었으므로 Swing 또는 JavaFX로 전환하고 싶습니다. 세 가지에 대한 당신의 생각을 듣고 싶습니다.

내 주요 관심사는 데스크탑 GUI 응용 프로그램에 무엇이 더 좋을까요? (나는 온라인을 보았고 많은 사람들이 JavaFX가 Swing만큼 좋은 것으로 제안하지만 단순한 의견 불꽃 ​​전쟁을 제외하고는 많은 유효한 주장을 보지 못했습니다). Windows, Mac 및 일부 인기있는 Linux 배포판 모두에서 작동해야합니다.

  • 더 깨끗하고 유지하기 쉬운 것은 무엇입니까?

  • 처음부터 더 빨리 빌드하는 것이 무엇입니까?

도움이된다면 응용 프로그램에서 MVC 방법을 사용하고 있습니다.



답변

더 깨끗하고 유지하기 쉬운 것은 무엇입니까?

아마도 모든 것이 동일 할 것입니다. 아마도 JavaFX 일 것입니다. API는 구성 요소에서 훨씬 더 일관됩니다. 그러나 이것은 코드를 작성 하는 데 사용되는 라이브러리가 아니라 코드 작성 방법 에 훨씬 더 의존 합니다 .

그리고 처음부터 더 빨리 구축하는 것이 무엇입니까?

당신이 짓고있는 것에 크게 의존합니다. Swing에는 더 많은 구성 요소가 있으며 (타사 및 내장) 새로운 JavaFX 플랫폼으로 아직 진출하지는 않았으므로 무언가가 필요할 경우 휠을 다시 발명해야 할 수도 있습니다. 조금 관례. 반면에 전환 / 애니메이션 / 비디오 작업을 수행하려면 FX에서 훨씬 쉽습니다.

명심해야 할 또 다른 것은 (아마도) 외모와 느낌입니다. 기본 시스템 모양과 느낌을 절대적으로 가져야하는 경우 JavaFX (현재)는이를 제공 할 수 없습니다. 큰 돈이 아니어야합니다 (어쨌든 기본 FX 모양을 선호합니다). 그러나 일부 정책은 시스템 스타일에 대한 제한을 요구한다는 것을 알고 있습니다.

개인적으로, 나는 “올라 오는”아니다 UI 라이브러리로 자바 FX를 참조 확실히 아직 (하지만 더 이상 사용 가능)가, 완전히 순간을 위해 기능 및 지원 년대 경계 – 기존 UI 라이브러리로 스윙, 그러나 아마되지 않습니다 앞으로 몇 년 동안 (따라서 FX가 언젠가는 그것을 능가 할 가능성이 있습니다.)


답변

Oracle에서 언급했듯이 JavaFX는 Java 기반 리치 클라이언트 전략의 다음 단계입니다. 따라서 이것이 귀하의 상황에 권장되는 것입니다.

유지하기 쉽고 더 쉬운 것

  • JavaFX는 Swing에 비해 FXML을 사용하여 UI를 마크 업하고 CSS를 사용하여 테마를 지정할 수있는 등 여러 가지 개선 된 기능을 도입했습니다. 깨끗하고 유지 보수가 쉬운 모듈 식 코드를 작성할 수있는 잠재력이 큽니다.

처음부터 더 빠른 빌드

  • 이것은 당신의 기술과 사용하는 도구에 크게 의존합니다.
    • 스윙을 위해 다양한 IDE가 신속한 개발을위한 도구를 제공합니다. 내가 개인적으로 찾은 가장 좋은 것은 NetBeans 의 GUI 빌더입니다 .
    • JavaFX는 Swing이 지원하는 것만 큼 성숙하지는 않았지만 다양한 IDE를 지원합니다. 그러나 FXML 및 CSS에서 마크 업을 지원하므로 JavaFX에서의 GUI 개발이 직관적입니다.

MVC 패턴 지원

  • JavaFX는 MVC 패턴에 매우 친숙하며 프레젠테이션 (FXML, CSS), 모델 (Java, 도메인 객체) 및 논리 (Java)로 작업을 명확하게 분리 할 수 ​​있습니다.
  • IMHO, Swing의 MVC 지원은 그리 매력적이지 않습니다. 다양한 구성 요소에서 볼 수있는 흐름에는 일관성이 없습니다.

자세한 내용은 여기 JavaFX에 관한 Oracle의 FAQ 게시물을 참조하십시오.


답변

아무도 언급하지 않았지만 “jfxrt.jar”지원이 없기 때문에 Oracle (예 : Solaris)에서 “서버”로 간주하는 특정 아키텍처에서 JavaFX가 컴파일되거나 실행되지 않습니다. 추후 공지가있을 때까지 SWT를 고수하십시오.


답변

나는이 질문에 대한 정답이 하나도 없다고 생각하지만, 그러한 대규모 점검이 필요한 심각한 한계에 직면하지 않는 한 내 충고는 SWT를 고수하는 것입니다.

또한 SWT는 실제로 Swing보다 새롭고 적극적으로 유지됩니다. ( 원래 구성 요소를 사용하여 Swing을 대체하기 위해 개발 되었습니다).


답변

원하는 것을 수행하는 일부 타사 구성 요소를 찾으십시오. 여러 리소스를 예약 할 수있는 아젠다 뷰를위한 사용자 지정 Swing 구성 요소와 키보드 탐색 등에서 잘 작동하는 Excel과 같은 그리드를 만들어야했습니다. 문제가 생길 때마다 Swing의 많은 복잡한 부분을 조사해야했기 때문에 작업을 훌륭하게 수행하는 데 끔찍한 시간이있었습니다. 마우스 및 포커스 동작과 다른 많은 것들, 특히 캐주얼 한 스윙 사용자에게는 올바르게 맞추기가 매우 어려울 수 있습니다. JavaFX가 조금 더 미래 지향적이고 매끄 럽기를 바랍니다.


답변

비디오 스윙 앱이 통합 된 구형 노트북에서 JavaFX 앱보다 훨씬 빠르게 시작되고 작동합니다. 개발과 관련하여 스칼라로 전환하는 것이 좋습니다. 비슷한 스칼라 스윙 앱에는 Java보다 2..3 배 적은 코드가 포함되어 있습니다. Swing vs SWT : Netbeans GUI는 Eclipse보다 상당히 빠릅니다 …


답변