source

Java Desktop 애플리케이션: SWT vs. Swing

goodcode 2022. 11. 5. 11:40
반응형

Java Desktop 애플리케이션: SWT vs. Swing

저는 현재 웹 개발자로, 최초의 실제 데스크톱 애플리케이션 구축을 생각하고 있습니다.API를 사용할 수 없는 웹 응용 프로그램에서 매우 반복적인 작업을 자동화하는 도구를 구축하는 것이 아이디어입니다.

자바를 사용하고 싶다고 생각하고 있습니다.이전에 웹에서 사용한 적이 있고, 구문을 잘 알고 있기 때문에, 가능한 한 크로스 플랫 폼으로 어플리케이션을 만들고 싶다고 생각하고 있습니다.

SWT를 사용해야 할지 Swing을 사용해야 할지 잘 모르겠습니다.주 시청자는 Windows를 사용하고 있기 때문에 가능한 한 네이티브하게 보이고 싶습니다.Linux와 Mac은 작동하지만 외관은 그다지 중요하지 않습니다.

그렇다면 각 UI 프레임워크, Swing 또는 SWT에 대한 찬반 논쟁은 무엇일까요?

감사해요.

PS: 저는 이클립스를 사용하여 Windows 상에서 개발합니다.하지만 넷빈스를 가지고 놀까 생각중이었어.

장점 스윙:

  • Java 라이브러리의 일부, 추가 네이티브 라이브러리 불필요
  • 모든 플랫폼에서 동일하게 동작합니다.
  • Netbeans 및 Eclipse 통합 GUI 편집기
  • Sun/Oracle의 좋은 온라인 튜토리얼
  • 공식 Java 확장 기능(Java OpenGL 등)에 의해 지원

단점 스윙:

  • 네이티브의 외관과 느낌은 실제 네이티브 시스템과 다를 수 있습니다.
  • 무거운 컴포넌트(heavy components/awt)는 스윙 컴포넌트를 숨기고 있으며, 무거운 컴포넌트의 사용이 다소 드물기 때문에 대부분의 경우 문제가 되지 않는다.

장점 SWT:

  • 가능한 경우 네이티브 요소를 사용하기 때문에 항상 네이티브 동작
  • 이클립스 지원, gui 에디터 VEP(VEP는 Swing 및 AWT도 지원)
  • 온라인상의 다수의 예
  • awt/swt 브릿지가 내장되어 있어 awt 및 swing 컴포넌트를 사용할 수 있습니다.

단점 SWT:

  • 지원되는 각 시스템에 네이티브 라이브러리가 필요합니다.
  • 네이티브 리소스가 사용되고 있기 때문에 모든 시스템에서 모든 동작을 지원하지 않을 수 있습니다(예: 옵션).
  • 네이티브 자원을 관리하는 한편, 네이티브 컴포넌트는 부모 자원과 함께 폐기되는 경우가 많습니다.예를 들어 폰트는 수동으로 해제되거나 자동 릴리스를 위해 컴포넌트에 폐기 리스너로 등록되어야 합니다.

고려해야 할 중요한 점은 일부 사용자와 일부 리셀러(델)가 64비트 Windows에 64비트 VM을 설치하고 32비트 VM과 64비트 VM에서 동일한 SWT 라이브러리를 사용할 수 없다는 것입니다.

즉, 사용자가 32비트 또는 64비트 Java VM을 가지고 있는지에 따라 다양한 패키지를 배포하고 테스트해야 합니다.를 들어, Azureus에서 이 문제를 볼 수 있지만, Eclipse에서도 이 문제를 볼 수 있습니다. 현재 전면 다운로드 페이지의 빌드가 64비트 VM에서 실행되지 않습니다.

프로 스윙:

  • swing IMHO의 가장 큰 장점은 어플리케이션과 함께 라이브러리를 출하할 필요가 없다는 것입니다(이것에 의해, 12 MB(!)를 피할 수 있습니다).
  • 원어민 룩&필이 초기보다 스윙에 훨씬 좋다
  • 퍼포먼스는 swt에 필적합니다(속도가 느리지 않습니다).
  • NetBeans는 Matisse를 쾌적한 컴포넌트 빌더로 제공합니다.
  • JavaFX 내 Swing 컴포넌트의 통합이 용이합니다.

그러나 결론적으로, 저는 '순수한' 스윙이나 swt;-) 스윙/스위트 아웃을 위한 몇 가지 애플리케이션 프레임워크가 있습니다.여기 보세요.가장 큰 선수는 팥(그네)과 일식(스위트)이다.또 하나의 훌륭한 프레임워크는 그리폰이며, 훌륭한 '컴포넌트 세트'는 피벗(스윙)입니다.그리폰은 많은 라이브러리를 통합하고 스윙뿐만 아니라 피벗, SWT 등을 하기 때문에 매우 흥미롭다.

나는 몇 가지 이유로 Swing을 사용할 것이다.

  • 그것은 더 오래되었고 더 많은 개발 노력이 적용되었다.따라서 기능이 더 완전하고 (아마도) 버그가 적습니다.

  • 퍼포먼스 어플리케이션의 작성에 관한 문서 및 기타 가이던스가 다수 준비되어 있습니다.

  • Swing에 대한 변경은 모든 플랫폼에 동시에 전파되는 반면 SWT에 대한 변경은 Windows에 먼저 나타나고 Linux에 나타나는 것으로 보입니다.

기능이 풍부한 애플리케이션을 구축하는 경우는, NetBeans RCP(Rich Client Platform)를 확인해 주세요.학습 곡선이 있지만, 약간의 연습으로 멋진 애플리케이션을 빠르게 조립할 수 있습니다.이클립스 플랫폼에 대한 경험이 부족해서 정확한 판단을 할 수 없어요

RCP 전체를 사용하지 않는 경우 NetBeans에는 개별적으로 추출하여 사용할 수 있는 유용한 컴포넌트도 많이 있습니다.

또 한 가지 조언은 다른 레이아웃 매니저에 대해 알아보라는 것입니다.내가 배우고 있을 때 그들은 오랫동안 나를 넘어뜨렸다.최고 중 몇몇은 심지어 일반 도서관에도 없다.MigLayout(Swing 및 SWT용)과 JGoodies Forms 툴은 제 의견으로는 최고의 툴 중 하나입니다.

자바가 네이티브이기 때문에 스윙을 선택하는 것이 좋습니다.

게다가 http://swingx.java.net/ 를 참조해 주세요.

SWT만큼 네이티브 플랫폼과 긴밀하게 통합되지 않고 시작하기 쉽기 때문에 요점은 Swing을 사용하는 것입니다.

스윙은 보통 안전하다.

흥미로운 질문입니다.SWT는 잘 모르지만(Swing이나 AWT와 달리) SWT/Swing/A에 대한 비교는 다음과 같습니다.WT.

http://www.developer.com/java/other/article.php/10936_2179061_2/Swing-and-SWT-A-Tale-of-Two-Java-GUI-Libraries.htm

여기에서는 SWT에서 기본적으로 모든 것에 대한 튜토리얼을 받을 수 있습니다(http://www.java2s.com/Tutorial/Java/0280__SWT/Catalog0280__SWT.htm)

올바른 결정을 내리시길 바랍니다(코딩에 올바른 결정이 있는 경우). :-)

고려해야 할 점: 스크린 리더

어떤 이유로 스크린 리더(및 Windows용 Java AccessBridge)를 사용할 때 일부 Swing 컴포넌트가 제대로 작동하지 않습니다.스크린 리더에 따라 동작이 다르다는 것을 알아 두십시오.제 경험상 SWT-Tree는 Swing-Tree와 스크린 리더를 조합하는 것보다 훨씬 뛰어난 성능을 발휘합니다.따라서 우리의 어플리케이션은 SWT와 Swing 컴포넌트를 모두 사용하게 되었습니다.

적절한 SWT 라이브러리를 배포 및 로드하려면 http://www.chrisnewland.com/select-correct-swt-jar-for-your-os-and-jvm-at-runtime-191 링크를 참조하십시오.

몇 가지 이상의 기능을 갖춘 완전한 기능을 갖춘 애플리케이션을 구축할 계획이라면 프레임워크로 Eclipse RCP를 바로 사용할 것을 제안합니다.

애플리케이션이 너무 커지지 않거나 일반적인 비즈니스 프레임워크로 처리하기에는 요구 사항이 너무 독특하다면 Swing을 사용하여 안전하게 이동할 수 있습니다.

결국, 두 가지 기술을 모두 사용하여 자신에게 더 적합한 기술을 찾는 것이 좋습니다.Netbeans vs Eclipse vs IntelliJ와 마찬가지로 여기에는 절대적인 정답이 없으며 두 프레임워크 모두 고유한 단점이 있습니다.

프로 스윙:

  • 더 많은 전문가들
  • Java와 유사함(대부분의 공개 필드나 리소스에서 폐기할 필요가 없음

프로 SWT:

  • OS 네이티브 증가
  • 빠른

SWT는 세기가 바뀔 무렵의 스윙의 부진에 대한 대응으로 만들어졌다.이제 성능 차이는 무시할 수 있게 되었으므로 표준 어플리케이션에서는 Swing이 더 나은 옵션이라고 생각합니다.SWT/Eclipse는 많은 보일러 플레이트 코드를 지원하는 멋진 프레임워크를 가지고 있습니다.

언급URL : https://stackoverflow.com/questions/2306190/java-desktop-application-swt-vs-swing

반응형