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


195

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

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

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

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

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


23
JavaFX는 처음부터 시작하는 것이 좋습니다. 또한 JavaFX가 Swing을 Oracle의 Java 용 UI 라이브러리로 공식적으로 대체하기 때문입니다. 그렇다고 스윙이 사라진 것은 아닙니다. JavaFX가 모든 릴리스에서 더 많은 관심을 끌 것임을 의미합니다. 그렇게 말하면,이 주제와 관련하여 SO와 Google의 다른 곳에서 이미 백만 개의 질문이 있습니다.
nico_c

3
stackoverflow.com/questions/10587713/… Google에 대해서도 언급했습니다. 이미 많이 있습니다.
nico_c

좋습니다. 그래서 제안은 실제로 fx 인 것 같습니다.이 열린 상태를 유지하지만 추측 한 대답을 받아들입니다. 링크 주셔서 감사합니다.
Quillion 2016 년

1
SWT, Swing 또는 JavaFX가 데스크탑 응용 프로그램을 생성하는 데 사용되지만 JavaFX에 대한 간략한 요약은 다음과 같습니다 .
jewelsea

아무도 언급하지 않았지만 "jfxrt.jar"지원이 없기 때문에 Oracle (예 : Solaris)에서 "서버"로 간주하는 특정 아키텍처에서 JavaFX가 컴파일되거나 실행되지 않습니다.
Malcolm Boekhoff

답변:


155

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

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

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

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

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

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


1
이러한 점이 모두 데스크톱 GUI 세계에서도 .NET 세계에도 적용된다고 생각합니다. Windows Presentation Foundation은 이전 Windows Forms를 대체하려는 현대적인 접근 방식이므로 이론적으로는 그렇지 않은 것을 제외하고는 모든 측면에서 더 좋습니다. 그러나 몇 년이 지났습니다) 간단한 파일 대화 상자 / 디렉토리 브라우저 / 트리보기 제어와 같은 기본 공통 컨트롤 / 쉘 모양을 지원하십시오.
bitoolean

84

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 게시물을 참조하십시오.


14

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


13
@Quillion은 특별히 "윈도우, 맥 및 일부 인기있는 리눅스 버전에서 작동 해야하는 데스크탑 응용 프로그램을 구축 할 것을 요구합니다 ." . 그래서 그는 솔라리스에 관심이 없다고 생각합니다.
Tim Büthe

5

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

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


16
SWT는 스윙을 대체하기위한 것이 아닙니다. 어떻게 요? Swing은 SUN의 Java와 함께 제공되었으며 SWT는 4 또는 5 플랫폼에서만 실행되며 원래 IBM에서 제공되었으며 Eclispe Foundation에서 추가로 개발되었습니다. 당신이 말할 수 있다면 : SWT는 AWT를 대체하는 것을 목표로했습니다.
Angel O'Sphere

0

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


0

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


스칼라 스윙은 언급하는 것이 좋습니다
추첨
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.