programing

Swing과 AWT의 차이점은 무엇입니까?

bestcode 2022. 8. 13. 12:12
반응형

Swing과 AWT의 차이점은 무엇입니까?

Swing과 AWT의 차이점을 설명해 주실 수 있나요?

AWT가 스윙 또는 그 반대보다 더 유용하거나 권장되는 경우가 있습니까?

AWT는 OS에 존재하는 네이티브 시스템 GUI 코드에 대한 Java 인터페이스입니다.모든 시스템에서 동일하게 동작하지는 않습니다.

Swing은 어느 정도 순수 Java GUI입니다.AWT를 사용하여 운영체제 창을 만든 후 버튼, 라벨, 텍스트, 체크박스 등의 그림을 창에 그리고 모든 마우스 클릭, 키 입력 등에 응답하여 운영체제에서 처리하지 않고 스스로 작업을 결정합니다.따라서 Swing은 100% 휴대가 가능하며 플랫폼 전체에서 동일합니다(단, 스키닝이 가능하고 네이티브 창과 위젯의 모양과 비슷하게 보일 수 있는 "플러그 모양과 느낌"이 있습니다).

이것들은 GUI 툴킷에 대한 접근법과는 크게 다르며 많은 결과를 초래합니다.당신의 질문에 대한 완전한 답변은 그 모든 것을 살펴보려고 할 것입니다.:) 다음은 몇 가지 예시입니다.

AWT는 크로스 플랫폼인터페이스이기 때문에 기본 OS 또는 네이티브 GUI 툴킷을 사용하여 기능을 수행하지만 이러한 툴킷이 수행할 수 있는 모든 기능에 액세스할 수 있는 것은 아닙니다.한 플랫폼에 존재할 수 있는 고급 또는 최신 AWT 위젯은 다른 플랫폼에서 지원되지 않을 수 있습니다.모든 플랫폼에서 동일하지 않은 위젯 기능이 지원되지 않거나 플랫폼마다 다르게 작동할 수 있습니다.사람들은 플랫폼 전체에서 AWT 애플리케이션이 일관되게 동작하도록 하기 위해 많은 노력을 기울이곤 했습니다.예를 들어, Java에서 네이티브 코드로 콜을 발신하려고 하는 경우도 있습니다.

AWT는 네이티브 GUI 위젯을 사용하기 때문에 OS는 이를 인식하고 서로 배치하는 등의 처리를 합니다.반면 Swing 위젯은 OS의 관점에서 창 내의 의미 없는 픽셀입니다.스윙 자체는 위젯의 레이아웃과 스택을 처리합니다.AWT와 Swing을 혼합하는 것은 매우 지원되지 않으며, 다른 모든 것은 Swing으로 생성되었기 때문에 해당 대화상자의 모든 것을 가리는 네이티브 버튼과 같은 터무니 없는 결과를 초래할 수 있습니다.

Swing은 네이티브 GUI 창에 의해 제공되는 매우 원시적인 그래픽 루틴을 제외하고 Java에서 가능한 모든 것을 시도하기 때문에 AWT에 비해 상당한 성능 저하가 발생하곤 했습니다.이것은 불행하게도 스윙을 이해하는 데 더디게 만들었다.그러나, JVM의 최적화, 머신의 고속화, Swing의 내부 최적화(추정)에 의해, 지난 몇년간에 걸쳐, 이 기능은 큰폭으로 축소되고 있습니다.현재 Swing 애플리케이션은 서비스 가능 또는 압축이 가능할 정도로 빠르게 실행되며 네이티브 위젯을 사용하는 애플리케이션과 거의 구분할 수 없습니다.이 지경에 이르는데 너무 오래 걸렸다고 말하는 사람도 있겠지만, 대부분은 그럴 가치가 있다고 말할 것이다.

마지막으로 SWT(Eclipse에 사용되는 GUI 툴킷이자 AWT와 Swing의 대체품)를 체크하는 것도 좋을지도 모릅니다.이것은 Java를 통해 네이티브 위젯에 액세스 하는 AWT의 발상으로 되돌아가는 것입니다.

모두가 이미 말한 기본적인 차이점은 하나는 무겁고 다른 하나는 가볍다는 것이다.여기서 설명하겠습니다.기본적으로 중량이라는 용어는 awt 컴포넌트를 사용할 때 뷰 컴포넌트를 얻기 위해 사용되는 네이티브 코드가 운영체제에 의해 생성되기 때문에 OS에서 OS로 모양과 느낌이 바뀝니다.스윙 컴포넌트와 마찬가지로 컴포넌트의 뷰를 생성하는 것은 JVM의 책임입니다.내가 본 또 다른 문장은 스윙은 MVC 기반이고 awt는 그렇지 않다는 이다.

스윙 vs AWT.기본적으로 AWT가 우선이며 헤비웨이트 UI 컴포넌트 세트(운영체제 오브젝트용 래퍼)인 반면 Swing은 AWT 위에 보다 풍부한 경량 컴포넌트 세트로 구축되어 있습니다.

중요한 Java UI 작업은 주로 애플릿에 사용되었던 AWT가 아닌 Swing에서 수행됩니다.

AWT가 Swing보다 더 유용할 수 있는 경우

  • Swing을 지원하지 않는 오래된 JVM 또는 플랫폼을 대상으로 할 수 있습니다.이것은 Applets를 구축하고 있을 때 실제로 사용되기 때문에, 새로운 Java 플러그 인을 인스톨 할 필요가 없게 하기 위해서, 가장 낮은 공통 요소를 타겟으로 하고 싶다고 생각하고 있었습니다.현재 가장 널리 설치되어 있는 Java 플러그인의 버전이 무엇인지 알 수 없습니다.오늘날에는 다를 수 있습니다.
  • some people prefer the native look of AWT over Swing's 'not quite there' platform skins. (There are better 3rd party native looking skins than Swing's implementations BTW) Lots of people preferred using AWT's FileDialog over Swing's FileChooser because it gave the platform file dialog most people were used to rather than the 'weird' custom Swing one.

Several consequences result from this difference between AWT and Swing.

AWT is a thin layer of code on top of the OS, whereas Swing is much larger. Swing also has very much richer functionality. Using AWT, you have to implement a lot of things yourself, while Swing has them built in. For GUI-intensive work, AWT feels very primitive to work with compared to Swing. Because Swing implements GUI functionality itself rather than relying on the host OS, it can offer a richer environment on all platforms Java runs on. AWT is more limited in supplying the same functionality on all platforms because not all platforms implement the same-looking controls in the same ways.

Swing components are called "lightweight" because they do not require a native OS object to implement their functionality. JDialog and JFrame are heavyweight, because they do have a peer. So components like JButton, JTextArea, etc., are lightweight because they do not have an OS peer.

A peer is a widget provided by the operating system, such as a button object or an entry field object.

Swing:

  1. Swing is part of the java foundation classes.
  2. Swing components are platform-independent.
  3. Swing components are lightweight components because swing sits on the top of awt.

AWT:

  1. AWT is called the abstract window tool.
  2. AWT components are platform-dependent.
  3. AWT components are heavyweight components.
  • swing component provide much flexible user interface because it follow model view controller(mvc).
  • awt is not mvc based.
  • swing works faster.
  • awt does not work faster.
  • swing components are light weight.
  • awt components are heavy weight.
  • swing occupies less memory space.
  • awt occupies more memory space.
  • swing component is platform independent.
  • awt is platform dependent.
  • swing require javax.swing package.
  • awt require javax.awt package.

AWT 1 . AWT occupies more memory space 2 . AWT is platform dependent 3 . AWT require javax.awt package

swings 1 . Swing occupies less memory space 2 . Swing component is platform independent 3 . Swing requires javax.swing package

Java 8

Swing

  • It is a part of Java Foundation Classes
  • Swing is built on AWT
  • Swing components are lightweight
  • Swing supports pluggable look and feel
  • Platform independent
  • Uses MVC : Model-View-Controller architecture
  • package : javax.swing
  • Unlike Swing’s other components, which are lightweight, the top-level containers are heavyweight.

AWT - Abstract Window Toolkit

  • Platform dependent
  • AWT components are heavyweight
  • package java.awt

ReferenceURL : https://stackoverflow.com/questions/408820/what-is-the-difference-between-swing-and-awt

반응형