맨위로가기

애브스트랙트 윈도 툴킷

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

애브스트랙트 윈도 툴킷(AWT)은 자바에서 GUI(그래픽 사용자 인터페이스)를 개발하기 위한 초기 툴킷이다. 1995년 자바가 처음 출시되었을 때 썬 마이크로시스템즈에 의해 도입되었으며, 운영체제의 네이티브 사용자 인터페이스를 얇게 추상화하여 각 플랫폼에 맞는 UI를 제공했다. 이후 J2SE 1.2에서 스윙 툴킷이 AWT 위젯을 대체하면서, 모든 플랫폼에서 동일한 룩 앤 필을 제공하는 방향으로 발전했다. AWT는 GUI 프로그래밍의 핵심 API를 제공하며, 스레드 안전성이 보장되지 않아 GUI 업데이트 및 이벤트 처리는 이벤트 디스패칭 스레드에서 실행되어야 한다. AWT와 스윙 컴포넌트를 혼합하여 사용할 때 z-order 문제가 있었으나, Java 6 Update 12부터 해결되었다. 새로운 운영체제에서 AWT를 구현하기 위한 프로젝트인 Caciocavallo가 진행되었으며, Java2D를 사용하여 AWT 위젯을 구현하고, DirectFB 및 HTML5 백엔드 개발을 통해 웹 애플리케이션 배포를 목표로 한다.

더 읽어볼만한 페이지

  • 자바 API - 자바 암호화 확장
  • 자바 API - 표준 위젯 툴킷
    표준 위젯 툴킷(SWT)은 자바 GUI 툴킷으로, 네이티브 룩앤필과 고성능을 위해 윈도 시스템의 그래픽 요소를 직접 사용하며, 이클립스 IDE의 기반 기술로 IBM에 의해 개발되었다.
  • 위젯 툴킷 - Tk (소프트웨어)
    Tk는 Tcl 스크립팅 언어의 크로스 플랫폼 GUI 툴킷으로, 다양한 플랫폼 이식과 여러 프로그래밍 언어 바인딩을 지원하며 사용자 정의 가능한 위젯들을 제공한다.
  • 위젯 툴킷 - 윈도우 API
    윈도우 API는 마이크로소프트 윈도우 운영 체제에서 응용 프로그램이 시스템 기능에 접근하도록 돕는 인터페이스 집합이며, 다양한 버전으로 발전해 왔고, 현재 Win32가 널리 사용되며, 유연성을 제공하지만 복잡하다는 단점을 보완하기 위해 다양한 래퍼 라이브러리가 개발되었다.
  • 자바 플랫폼 - 블루레이
    블루레이 디스크는 DVD 후속 매체로, 청색 레이저를 사용하여 고화질 영상과 음향을 제공하며 HD DVD와의 경쟁 후 고밀도 광디스크 표준으로 자리 잡았으나 스트리밍 서비스 성장으로 녹화용 디스크 생산이 중단되는 추세이다.
  • 자바 플랫폼 - 자바 플랫폼, 마이크로 에디션
    자바 ME는 임베디드 및 모바일 장치에서 자바 앱을 실행하는 플랫폼으로, 피처폰에서 주로 사용되었으며 다양한 프로파일과 에뮬레이터, 개발 도구를 제공하고 JSR을 통해 기능이 확장된다.
애브스트랙트 윈도 툴킷
기본 정보
종류그래픽 사용자 인터페이스 (GUI) 툴킷
개발자선 마이크로시스템즈 (현재 오라클 소유)
초기 릴리스1995년
최신 안정화 버전1.0.2 (1998년 12월 11일)
상태유지 보수 모드
작성 언어자바
운영 체제크로스 플랫폼 (Java VM 필요)
플랫폼자바 VM
유형위젯 툴킷
라이선스GNU 일반 공중 사용 허가서 버전 2, 선 마이크로시스템즈 바이너리 코드 라이선스
상세 정보
영향 받은 것볼랜드 인터페이스 라이브러리
영향 준 것스윙
표준 위젯 툴킷

2. 역사

1995년 썬 마이크로시스템즈자바를 처음 출시했을 때 AWT가 함께 제공되었다. AWT는 운영체제의 네이티브 UI 구성요소에 대한 추상화를 제공하여, 개발자들이 플랫폼에 독립적인 GUI 애플리케이션을 개발할 수 있도록 했다.

2. 1. AWT와 네이티브 UI의 관계

AWT 위젯은 운영 체제의 네이티브 사용자 인터페이스에 대한 얇은 추상화를 제공한다. 예를 들어, AWT 체크 박스를 생성하면, AWT는 해당 운영 체제의 기본 네이티브 체크 박스 생성 서브루틴을 호출한다. 이러한 방식은 네이티브 윈도잉 툴킷에 대한 높은 수준의 충실도와 네이티브 애플리케이션과의 원활한 통합을 제공하지만, 플랫폼마다 UI가 다르게 보일 수 있다는 단점이 있다.

2. 2. 스윙(Swing)의 등장

J2SE 1.2에서 스윙 툴킷이 AWT의 위젯을 상당 부분 대체했다.[1] 스윙은 Java 2D를 사용하여 자체 위젯을 그리므로, 모든 플랫폼에서 일관된 룩 앤 필(Look and Feel)을 제공한다.[1] 스윙은 네이티브 플랫폼의 룩 앤 필 또는 크로스 플랫폼 룩 앤 필(Java Look and Feel)을 선택하여 사용할 수 있다.[1]

3. 아키텍처

AWT는 자바 GUI 프로그래밍을 위한 기본적인 기능을 제공한다. 핵심 API는 스윙 및 Java 2D에서도 사용되는 구성 요소를 제공하며,[1] AWT 네이티브 인터페이스를 통해 네이티브 코드로 작성된 라이브러리가 AWT 캔버스에 직접 접근할 수 있도록 지원한다.[2]

AWT를 사용하여 애플릿과 프레임을 생성하고, 윈도우 이벤트를 처리하는 예시는 다음과 같다.[3]

3. 1. 핵심 API

AWT의 핵심 API는 자바 GUI 프로그래밍의 기반이며, 스윙 및 Java 2D에서도 사용된다.

3. 2. AWT 네이티브 인터페이스

AWT는 네이티브 코드로 컴파일된 렌더링 라이브러리가 AWT 캔버스 객체에 직접 그릴 수 있도록 하는 AWT 네이티브 인터페이스를 제공한다.

3. 3. 상위 수준 기능

주어진 코드는 AWT를 사용하여 애플릿과 프레임을 생성하고, 윈도우 이벤트를 처리하는 간단한 예제이다. 이 코드는 AWT의 기본적인 사용법을 보여주지만, '상위 수준 기능'에 대한 구체적인 내용을 담고 있지 않다. 따라서 주어진 코드만으로는 섹션 내용을 작성하기 어렵다.

4. 스레드 안전성

AWT와 스윙은 기본적으로 스레드 안전성을 보장하지 않는다. 따라서 GUI 업데이트 및 이벤트 처리는 이벤트 디스패칭 스레드에서 실행되어야 한다. 스레드 관련 문제를 해결하기 위해 SwingWorker 유틸리티 클래스를 사용할 수 있다.[1]

5. AWT와 스윙 컴포넌트 혼합

Java 6 Update 12 이전에는 스윙 컴포넌트와 AWT 컴포넌트를 혼합하여 사용할 경우, Z 순서(z-order) 문제가 발생할 수 있었다. Java 6 Update 12부터는 Z 순서 문제없이 스윙 및 AWT 위젯을 혼합할 수 있다. 가급적 동일한 기능을 하는 스윙 컴포넌트(J로 시작)를 사용하고, AWT 컴포넌트는 사용하지 않는 것을 권장한다. (예: `Button` 대신 `JButton`)

6. 구현

AWT는 네이티브 사용자 인터페이스로의 브리지 역할을 하므로, 새로운 운영 체제에서 구현하는 데 많은 작업이 필요할 수 있다. Caciocavallo 프로젝트는 OpenJDK 기반 자바 API를 제공하여 새로운 시스템에서 AWT 구현을 용이하게 한다.

참조

[1] 웹사이트 Mixing heavy and light components http://java.sun.com/[...] Sun Microsystems 2008-12-17
[2] 웹사이트 Bug/RFE fixed in current JDK 6u12 build https://web.archive.[...] Sun Microsystems 2008-12-17
[3] 웹사이트 FINAL PROPOSAL: Portable GUI backends http://mail.openjdk.[...] 2008-09-07
[4] 웹사이트 Caciocavallo Architecture Overview http://rkennke.wordp[...] 2008-09-07
[5] 웹사이트 Cacio Swing AWT peers http://rkennke.wordp[...] 2008-09-07
[6] 웹사이트 How much has been pushed upstream? http://mail.openjdk.[...] openjdk.java.net 2010-03-07
[7] 웹사이트 JDK7 and Cacio coolness http://rkennke.wordp[...] 2011-08-08
[8] 웹사이트 HTML5/Canvas backend for Caciocavallo (GNU-Classpath) https://web.archive.[...] 2011-08-08



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com