자바 데스크탑 애플리케이션 : SWT 대 스윙
저는 웹 개발자이며 첫 번째 실제 데스크톱 응용 프로그램을 구축 할 생각입니다. 아이디어는 API를 사용할 수없는 웹 응용 프로그램에서 매우 반복적 인 작업을 자동화하는 도구를 구축하는 것입니다.
Java를 사용하고 싶다는 것을 알고 있습니다. 나는 전에 웹 물건을 위해 그것을 사용했고, 구문을 꽤 잘 알고 있으며 응용 프로그램이 가능한 한 쉽게 플랫폼 간 크로스 폼이되기를 원합니다.
SWT 또는 Swing을 사용 해야하는지 확실하지 않은 곳입니다. 주요 사용자가 Windows를 사용함에 따라 가능한 한 기본적으로보고 싶습니다. 리눅스와 맥은 작동하지만 외관은 그다지 중요하지 않습니다.
그렇다면 각 UI 프레임 워크, Swing 또는 SWT에 대한 논쟁은 무엇입니까?
감사.
추신 : 저는 Eclipse를 사용하여 Windows에서 개발합니다. 그러나 Netbeans을 가지고 노는 것에 대해 생각하고있었습니다.
프로 스윙 :
- 자바 라이브러리의 일부, 추가 네이티브 라이브러리 불필요
- 모든 플랫폼에서 동일한 방식으로 작동
- Netbeans 및 Eclipse의 통합 GUI 편집기
- Sun / Oracle의 훌륭한 온라인 자습서
- 공식 Java 확장 (예 : java OpenGL)에서 지원
단점 스윙 :
- 기본 모양과 느낌은 실제 기본 시스템과 다르게 작동 할 수 있습니다.
- 무거운 구성 요소 (native / awt)는 스윙 구성 요소를 숨 깁니다. 무거운 구성 요소를 사용하는 것이 드물기 때문에 대부분 문제가되지 않습니다.
장점 SWT :
- 가능한 경우 기본 요소를 사용하므로 항상 기본 동작
- 이클립스, GUI 편집기 VEP (VEP는 Swing 및 AWT도 지원)
- 많은 수의 예제 온라인
- awt 및 swing 구성 요소를 사용할 수 있도록 awt / swt 브리지가 통합되어 있음
단점 SWT :
- 지원되는 시스템마다 기본 라이브러리가 필요합니다.
- 사용 된 기본 자원 (힌트 옵션)으로 인해 모든 시스템에서 모든 동작을 지원하지는 않습니다.
- 네이티브 구성 요소는 종종 부모와 함께 처리되지만 글꼴과 같은 다른 리소스는 수동으로 해제하거나 자동 해제를 위해 구성 요소에 대한 리스너로 처리해야합니다.
고려해야 할 중요한 사항은 일부 사용자 및 일부 리셀러 (Dell)가 64 비트 Windows에 64 비트 VM을 설치하고 32 비트 및 64 비트 VM에서 동일한 SWT 라이브러리를 사용할 수 없다는 것입니다.
즉, 사용자에게 32 비트 또는 64 비트 Java VM이 있는지 여부에 따라 다른 패키지를 배포하고 테스트해야합니다. 예를 들어 Azureus 에서이 문제 를 확인하십시오 . 그러나 현재는 프론트 다운로드 페이지의 빌드가 64 비트 VM에서 실행되지 않는 Eclipse에서도 있습니다.
프로 스윙 :
- 스윙 IMHO의 가장 큰 장점은 라이브러리를 응용 프로그램과 함께 제공 할 필요가 없다는 것입니다 (수십 MB (!)를 피함).
- 기본 모양과 느낌이 초기보다 스윙에 훨씬 좋습니다
- 성능은 swt와 비슷합니다 (스윙은 느리지 않습니다!)
- NetBeans는 Matisse를 편안한 컴포넌트 빌더로 제공합니다.
- JavaFX 내에서 Swing 구성 요소의 통합이 더 쉽습니다.
그러나 결론적으로 나는 '순수한'스윙 또는 swt를 사용하지 않는 것이 좋습니다 ;-) 스윙 / 스 wt 아웃을위한 몇 가지 애플리케이션 프레임 워크가 있습니다. 여기를보십시오 . 가장 큰 플레이어는 넷빈 (스윙)과 이클립스 (swt)입니다. 또 다른 좋은 프레임 워크는 그리폰 일 수 있고 멋진 '구성 요소 세트'는 피벗 (스윙)입니다. Griffon은 스윙뿐만 아니라 많은 라이브러리를 통합하기 때문에 매우 흥미 롭습니다 . 피벗, swt 등
몇 가지 이유로 Swing을 사용합니다.
더 오래되었고 더 많은 노력이 적용되었습니다. 따라서 더 많은 기능이 완성되고 버그가 적을 수 있습니다.
성능이 뛰어난 응용 프로그램을 만드는 방법에 대한 많은 설명서와 기타 지침이 있습니다.
- Swing에 대한 변경 사항이 모든 플랫폼에 동시에 전파되는 것처럼 보이며 SWT에 대한 변경 사항은 Windows에 먼저 나타난 다음 Linux에 나타납니다.
기능이 풍부한 응용 프로그램을 구축하려는 경우 NetBeans RCP (Rich Client Platform) 를 확인하십시오 . 학습 곡선이 있지만 약간의 연습으로 멋진 응용 프로그램을 신속하게 구성 할 수 있습니다. Eclipse 플랫폼에 대한 충분한 경험이 없어서 올바른 판단을 내릴 수 없습니다.
If you don't want to use the entire RCP, NetBeans also has many useful components that can be pulled out and used independently.
One other word of advice, look into different layout managers. They tripped me up for a long time when I was learning. Some of the best aren't even in the standard library. The MigLayout (for both Swing and SWT) and JGoodies Forms tools are two of the best in my opinion.
I whould choose swing just because it's "native" for java.
Plus, have a look at http://swingx.java.net/.
For your requirements it sounds like the bottom line will be to use Swing since it is slightly easier to get started with and not as tightly integrated to the native platform as SWT.
Swing usually is a safe bet.
Interesting question. I don't know SWT too well to brag about it (unlike Swing and AWT) but here's the comparison done on SWT/Swing/AWT.
And here's the site where you can get tutorial on basically anything on SWT (http://www.java2s.com/Tutorial/Java/0280__SWT/Catalog0280__SWT.htm)
Hope you make a right decision (if there are right decisions in coding)... :-)
If you plan to build a full functional applications with more than a handful of features, I will suggest to jump right to using Eclipse RCP as the framework.
If your application won't grow too big or your requirements are just too unique to be handled by a normal business framework, you can safely jump with Swing.
At the end of the day, I'd suggest you to try both technologies to find the one suit you better. Like Netbeans vs Eclipse vs IntelliJ, there is no the absolute correct answer here and both frameworks have their own drawbacks.
Pro Swing:
- more experts
- more Java-like (almost no public field, no need to dispose on resource)
Pro SWT:
- more OS native
- faster
One thing to consider: Screenreaders
For some reasons, some Swing components do not work well when using a screenreader (and the Java AccessBridge for Windows). Know that different screenreaders result in different behaviour. And in my experience the SWT-Tree performs a lot better than the Swing-Tree in combination with a screenreader. Thus our application ended up in using both SWT and Swing components.
For distributing and loading the proper SWT-library, you might find this link usefull: http://www.chrisnewland.com/select-correct-swt-jar-for-your-os-and-jvm-at-runtime-191
SWT was created as a response to the sluggishness of Swing around the turn of the century. Now that the differences in performance are becoming negligable, I think Swing is a better option for your standard applications. SWT/Eclipse has a nice framework which helps with a lot of boiler plate code.
참고URL : https://stackoverflow.com/questions/2306190/java-desktop-application-swt-vs-swing
'development' 카테고리의 다른 글
MD5 입 / 출력의 최대 길이 (0) | 2020.06.07 |
---|---|
지도를 반복하면서 제거하는 방법? (0) | 2020.06.07 |
SQL 또는 TSQL Turing이 완료 되었습니까? (0) | 2020.06.07 |
CUDA 그리드 치수, 블록 치수 및 스레드 구성 이해 (간단한 설명) (0) | 2020.06.07 |
Visual Studio 2010에서 Ctrl + 스크롤 확대 / 축소를 비활성화하는 방법은 무엇입니까? (0) | 2020.06.07 |