Java Swing GUI 프레임 워크에는 어떤 단점이 있습니까? [닫은]


11

일부 데스크탑 응용 프로그램에 Java Swing을 사용했습니다. 그러나 다른 GUI 프레임 워크를 많이 사용하지 않았으므로 비교할 수 없습니다.

Swing에서 좋아하는 것과 싫어하는 것이 있지만, 거의 모든 상황이 있습니다.

Java Swing GUI 프레임 워크의 가장 큰 단점은 무엇입니까?


2
질문은 방해입니다. QT, GTK, SWT, Winforms, Cocoa 등에 비해 Swing의 강점과 약점이 무엇인지 궁금합니다. 어쩌면
논란의

답변:


3
  1. 어딘가에 자바가 설치되어 있어야합니다. 이것은 물론 모든 GUI 프레임 워크에서 사실이지만, 자바는 2 톤 고릴라에 대한 인식을 가지고 있습니다. 로드가 더 좋아졌지만 초기 자바 애플릿 시절에는 많은 사람들이 꺼졌습니다. 하나의 앱만 실행하는 데 필요한 경우 보안 패치 등으로 최신 상태를 유지하는 것이 좋습니다. 누구나 YouTube에 Flash를 설치해야합니다. .Net 프레임 워크는 무대 뒤에서 설치되며 누구나 브라우저에서 자바 스크립트를 사용할 수 있습니다. Java는 일반적으로 추가 작업입니다.

  2. 한 번만 쓸 수는 있지만 어디에서나 실행해도 여전히 Mac OSX에 사용하려는 새로운 기능이 없거나 한 클라이언트가 JRE 1.4 이후에 맨드 레이크 리눅스를 업그레이드하는 것을 거부합니다.

  3. 개발자는 스레딩에 대해 생각해야합니다. 그리고 멀티 스레딩이 가능하기 때문에 까다로운 방법이지만 스윙은 모두 단일 스레드 인 것처럼 가장합니다. 그러나 가져온 라이브러리의 절반은 어느 정도의 멀티 스레딩을 가지고 있으며 EDT invokeLater에 대해 알고 있다고 가정하면 많은 교훈을 어렵게 만듭니다.

  4. 스윙 경험은 다른 종류의 UI 개발로 쉽게 전달되지 않습니다. 예를 들어 .css의 테이블을보고 있으면 Jtables, 렌더러, 편집기 등이 완전히 길을 잃게 될 것입니다.

일반적으로 Swing의 주요 문제점은 그것이 그것이 어떻게 시장에 팔리지 않았는가입니다. 많은 사용 사례에 완벽하게 적합한 기술이지만 처음 5-6 년 동안은 끔찍한 구현과 끔찍한 애플릿으로 가득했습니다. 그리고 이제는 웹 3.0 또는 그 밖의 모든 것에 대한 오래된 기술입니다.

내가 말한대로, 나는 스윙을 좋아하고 당신이 제공하는 것을 필요로 할 때 프로가 일반적으로 단점을 능가한다고 생각합니다. 그러나 웹 경험이 너무나 보편적이기 때문에 많은 사용자가 가장 간소화 된 놀라운 스윙 앱보다 웹 앱으로 더 쉬운 시간을 보낼 수 있습니다. 그리고 멋진 스윙 앱이 있지만 주류가 아닌 것 같습니다.


1
나는 OP와 같은 상황에 있습니다 : Swing을 알고 있으며 다른 GUI takelits와 비교하는 데 관심이 있습니다. 나에게 포인트 1, 2 및 4는 질문과 관련이 없습니다. 그래서 포인트 3에 반응하고 싶습니다 : 멀티 스레드 GUI 툴킷의 예를 들어 주시겠습니까? 감사.
barjak

2
@ barjak : 멀티 스레드 GUI는 실수입니다. 내가 아는 유일한 것은 이전 Java AWT입니다. 그러나 그들은 모든 현대적인 GUI 프레임 워크로서 단일 스레드 인 Swing을 설계 할 때의 실수로부터 배웠습니다.
조나스

@Jonas 개발자가 멀티 스레딩에 대해 생각하게하는 것은 종종 실수이지만, 어느 정도의 멀티 스레딩 없이는 애니메이션을 실행하거나 RMI 호출을하거나 강렬한 계산을 수행 할 수 없습니다 (이는 팻 클라이언트 툴킷입니다).
Steve Jackson

3
@Steve : 맞습니다. 그러나 GUI 스레드에서 RMI 호출 및 강렬한 계산을 수행 해서는 안됩니다 . 이러한 종류의 작업은 Swing 및 WPF에서와 같이 백그라운드 스레드에서 수행해야합니다.
Jonas

@ barjak-Windows 양식, MFC, SWT, pyQT, Juce .... 다중 스레드가 아닌 것을 생각하는 데 어려움을 겪고 있습니다. 동일한 규칙이 적용되지만 GUI 구성 요소를 만든 스레드를 제외하고는 GUI 구성 요소를 건드릴 수 없습니다.
Steve Jackson

2

조나스,

Swing은 기본 아키텍처를 일반화하여 플랫폼에 중립적 인 사용자 경험을 제공합니다. OS에서 제공하는 유일한 헤비급 구성 요소는 JFrame 컨테이너이며 나머지는 Swing takeit에서 처리합니다. 다른 하드에있는 AWT는 OS에 모든 UI 구성 요소를 그리도록 요청합니다. 즉, OS에 고유 한 기본 UI 구성 요소를 사용하는 것처럼 많은 방법으로 더 빠릅니다. SWT는 버튼 및 레이블 (대부분의 OS에서 사용 가능)과 같은 다양한 표준 구성 요소에 대해 중간 수준을 달성하려고 시도하며, OS가 해당 구성 요소를 처리하고 다른 특수 구성 요소에 대해 SWT가 생성을 처리합니다.

즉, 단점을 설명 할 수 있습니다.

(1) 툴킷은 OS를 요청하지 않고 컴포넌트를 작성하고 렌더링하므로 OS에서 제공하는 내장 컴포넌트의 속도를 이용할 수 없습니다.

(2) UI는 사용자가 사용하는 모양과 느낌을 고려하여 대부분의 OS 플랫폼에 익숙하지 않기 때문에 특히 세심한주의를 기울이지 않습니다.

(3) 일부 레이아웃 관리자, 즉 GridBadLayout 등이 더 간단 해 질 수 있습니다. 사람들이 GridBagLayout을 맞춤형 코드로 감싸서 사용하는 간단한 프로젝트 수를 잃어 버렸습니다.

AWT, Swing 및 SWT로 간단한 앱을 작성하고 개발 방식을 최종 제품과 비교하고 다른 개발자가 작성한 다양한 의견을 검토하고 어느 것이 가장 적합한 지 결정하는 것이 좋습니다. 나는 수년간 Swing과 함께 일해 왔으며 SWT를 싫어했지만 다른 프레임 워크와 비교할 때 Swing이 훨씬 복잡하다는 것을 깨달았습니다.


4
Swing은 GPU 가속 으로 기본 프레임 워크가 많지 않으므로 실제로 Swing이 더 빠르다고 생각합니다. 이것은 Windows의 WPF가 WinForms를 갖지 않는 전략이기도합니다 (일부 Windows 버전에서만). 사용자 정의가 가능하거나 플랫폼 자체 LaF를 사용할 수있는 경우 "사용하는 모양과 느낌을 어떻게 생각하는지"를 어떻게 알 수 있습니까? 레이아웃 관리자가 정말 나쁘다는 데 동의합니다.
Jonas

Jonas, 스윙의 "사용자 정의 가능"측면은 다른 프레임 워크에 비해 까다로워집니다. OS가 제공하는 기능에서 벗어나려고하면 제공하는 많은 이점을 잃게됩니다. Swing의 첫 번째 버전은 악몽으로, SWT가 처음으로 만들어졌습니다. 나중에 스윙에 훨씬 더 빠르게 향상되었으며 GUI에 대한 더 나은 스레딩 지원을 제공하는 SwingUtilities와 같은 클래스가 있습니다.
황량한 행성

못생긴 단어 일 수도 있습니다. 외계인은 외모와 느낌이 기본 UI 외형과 느낌과 정확히 같지 않기 때문에 더 나은 단어 일 수 있습니다. 내가 기억하는 바에 따르면 Java, 주제, 금속 및 기타 몇 가지가 있지만 일반적으로 그렇지 않습니다. 모두 예쁘다.
황량한 행성

비교를 할 때 다음으로 살펴볼 것은 UI 개발과 관련된 노력입니다. 레이아웃 관리자가 실제로 나쁘다고 말하지는 않을 것입니다 (모바일 장치 작업에서 처리해야 할 레이아웃이 전혀 없음). 그러나 모델을 단순화하기 위해 노력하지는 않습니다.
황량한 행성

나는 당신이 말한 것을 바탕으로, 당신은 최신 버전의 Swing을 사용하고 있다고 생각하지만, 처음 나왔을 때 사람들은 Swing 기반 애플릿을 제공하려고 시도했을 때 그것을 싫어했습니다. Java로 개발 된 UI 프레임 워크에 대한 많은 역사가 있으며, 살펴보면 흥미로운 내용입니다.
황량한 행성

-2

스윙은 느리고 (나쁜 성능), 사용하기 어렵거나 어색한 (다른 많은 것들과 비교하여) 실제로 일부 플랫폼에서는 그다지 좋지 않습니다.


5
속도가 빠르므로 (많은 기본 GUI와 비교하여 GPU 가속 기능이 있음) 성능에 동의 할 수 없거나 예가 있습니까? 다른 프레임 워크와 비교하여 어렵고 어색합니까? 잘 보이지 않지만 기본 앱처럼 보이거나 사용자 정의 LaF를 사용하도록 구성 할 수 있다는 데 동의합니다.
조나스

GTK에서는 항상 네이티브가 아닌 것처럼 보입니다. 내가 들었던 것은 위젯을 그리기 위해 Java 2D에 의존하기 때문에 속도가 느리지 만 그것을 증명할 수는 없습니다. Qt와 GTK는 나에게 덜 서투른 느낌이지만 취향은 다릅니다.
Anto

아, 일부 플랫폼에서는 성능이 떨어질 수 있습니다. GPU 가속 및 매우 빠른 Windows에서만 사용했습니다.
Jonas

6
사람들은 여전히 ​​모든 페이지가 다르게 보이는 점점 더 많은 브라우저 기능 (스택 교환)을 사용하면서 무언가가 기본적으로 보이지 않는다고 불평합니다. 그리고 속도? 대부분의 경우 대화식 GUI 프로그램이 사용자를 기다리고 있습니다.
사용자가 알 수 없음

2
대부분의 "유행"프로그램은 더 이상 기본적으로 보이지 않습니다. 스윙은 그 점에서 더 나쁘지 않습니다. 50kloc 스윙 앱 (팻 클라이언트)의 성능은 괜찮습니다. "기본"응용 프로그램보다 충돌하지 않는 지점으로 스윙하기가 훨씬 쉽습니다.
팀 Williscroft
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.