GGWiki
새 문서
일반/위키

구글 웹 툴킷

공식 자료를 바탕으로 AI가 작성한 초안 · 출처 보기

편집 이의 제기 토론 수정 이력 토론에서 언급
구글 웹 툴킷 로고
구글 웹 툴킷 로고 · 이미지 출처 ↗

개요편집이의 제기

구글 웹 툴킷(Google Web Toolkit, GWT)은 웹 개발자가 복잡한 자바스크립트 프론트엔드 애플리케이션을 자바(Java) 프로그래밍 언어로 작성하고 관리할 수 있게 하는 오픈 소스 도구 집합이다. 2006년 5월 16일 버전 1.0 RC 1이 공개되었으며, 구글이 개발하고 아파치 라이선스 버전 2.0 하에 배포된다. 모든 핵심 구성 요소가 자바 소스 코드로 이루어져 있으며, GWT 앤트(Ant) 빌드 파일을 통해 리눅스를 비롯한 지원 운영 체제 어디서나 빌드할 수 있다. GWT는 재사용성, 비동기 원격 프로시저 호출(RPC), 브라우저 역사 관리, 북마크, UI 추상화, 국제화(i18n), 크로스 브라우저 이식성을 핵심 가치로 내세운다.[1][2][3]

역사편집이의 제기

초기 공개와 자바원 발표

GWT 버전 1.0 RC 1은 2006년 5월 16일 출시되었고, 같은 해 구글은 자바원(JavaOne) 콘퍼런스에서 GWT를 공식 발표했다.[2][3]

주요 버전 출시 연표

자료에 기록된 주요 버전과 출시 연도는 다음과 같다.

GWT 1.0 (2006년)

GWT 1.1 (2006년)

GWT 1.2 (2006년)

GWT 1.3 (2007년)

GWT 1.4 (2007년)

GWT 1.5 (2008년)

GWT 1.6 (2009년)

GWT 1.7 (2009년)

GWT 2.0 (2009년)

GWT 2.1.0 (2010년)

GWT 2.2.0 (2011년)

GWT 2.3.0 (2011년)

GWT 2.4.0 (2011년)

GWT 2.5.0 (2012년)

GWT 2.5.1 (2013년)

GWT 2.6.0 (2014년)

GWT 2.6.1 (2014년)

GWT 2.7.0 (2014년)

GWT 2.8.0 (2016년)

GWT 2.8.1 (2017년)

GWT 2.8.2 (2017년)

GWT 2.9.0 (2020년)

GWT 2.10.0 (2022년)

GWT 2.11.0 (2024년)

GWT 2.12.0 (2024년)

GWT 2.12.1 (2024년)[2]

인스턴트레이션 인수와 이클립스 플러그인 통합

2010년 8월, 구글은 이클립스 자바 개발자 도구에 주력하던 인스턴트레이션(Instantiations)을 인수했다. 이 회사가 개발하던 GWT 디자이너(GWT Designer)는 이후 구글 플러그인 포 이클립스(Google Plugin for Eclipse)에 번들로 포함되었다.[3]

다트 언어 등장과 GWT의 위상

2011년 다트(Dart) 프로그래밍 언어가 소개되면서, 구글은 GWT를 당분간 계속 지원할 것이라고 밝히는 동시에 두 구조적 웹 프로그래밍 접근법 간의 향후 조화 가능성을 시사했다. 다만 GWT 엔지니어 다수가 다트 팀으로 이동했음도 언급되었다.[3]

완전한 오픈 소스 프로젝트로의 전환

2012년 연례 I/O 콘퍼런스에서 구글은 GWT를 구글 주도 프로젝트에서 완전히 오픈 소스화된 프로젝트로 전환하겠다고 발표했다. 2013년 7월 GWT 블로그를 통해 이 전환이 완료되었음이 공지되었다.[3] 현재 GWT 프로젝트 공식 사이트는 "GWT는 2.5 버전 이후 공식 오픈 소스 프로젝트"임을 명시하고 있다.[4]

기능과 사용법 개요편집이의 제기

핵심 구성 요소

GWT는 네 가지 주요 구성 요소로 이루어져 있다.[2][3]

#### GWT 자바-자바스크립트 컴파일러

자바 프로그래밍 언어를 자바스크립트 프로그래밍 언어로 변환한다. 배포 시 자바 소스를 독립적인 자바스크립트 파일로 번역하며, 필요에 따라 난독화(obfuscation)와 심층 최적화를 수행한다. 컴파일 결과는 난독화·압축된 형식뿐만 아니라 소스 맵(Source-Mapped) 또는 소스 코드(Source-Code) 형태의 비난독화 형식으로도 산출할 수 있다.[3]

#### GWT 개발 모드 (Development Mode)

개발자가 GWT 애플리케이션을 자바스크립트로 컴파일하지 않고 JVM(Java Virtual Machine) 위에서 자바 바이트코드로 실행할 수 있게 한다. 이 모드는 핫 스왑(hot swapping)과 디버깅을 지원한다. 2.0 버전 이전에는 전용 '호스티드 브라우저'를 내장했으나, 2.0부터는 일반 브라우저에서 디버깅 중인 웹 페이지를 볼 수 있도록 브라우저 플러그인(Google Web Toolkit Developer Plugin)을 통해 TCP/IP로 개발 모드 셸과 통신하는 방식(In-Browser Development Mode, 구 OOPHM)으로 변경되었다. 이로 인해 크로스 플랫폼 디버깅(예: 리눅스에서 실행 중인 개발 모드 셸로 윈도우의 인터넷 익스플로러 디버깅)이 가능해졌다. 2014년 브라우저 업데이트로 기존 구현이 작동 불능이 되자, 더 호환성 높은 슈퍼 개발 모드(Super Dev Mode)로 대체되어 GWT 2.7부터 기본값이 되었다.[3]

#### JRE 에뮬레이션 라이브러리

자바 표준 클래스 라이브러리에서 흔히 쓰이는 클래스들의 자바스크립트 구현체를 제공한다. `java.lang` 패키지 대부분과 `java.util` 패키지의 부분 집합이 포함된다.[2][3]

#### GWT 웹 UI 클래스 라이브러리

위젯을 만들기 위한 사용자 지정 인터페이스와 클래스 모음이다.[2][3]

개발 및 배포 워크플로

개발자는 자바 개발 도구(IDE 등)를 자유롭게 선택해 Ajax 애플리케이션을 작성·디버깅한다. 배포 단계에서 GWT 크로스 컴파일러가 자바 소스를 독립적 자바스크립트 파일로 변환한다. 자바 주석을 이용해 자바스크립트 코드를 자바 소스에 직접 삽입하는 JSNI(JavaScript Native Interface)도 지원한다. 아키텍처 결정은 개발자에게 맡기며, GWT는 브라우저 역사 토큰 관리 등 인프라만 제공한다.[3]

주요 기능

동적·재사용 가능한 UI 컴포넌트: 드래그 앤 드롭, 복잡한 시각적 트리 구조 등 내장 클래스로 구현

단순 RPC 메커니즘

브라우저 역사 관리

자바 디버깅 지원

크로스 브라우저 이슈 자동 처리

단위 테스트 통합 (JUnit 등)

국제화·지역화(i18n/L10n) 지원

HTML5 캔버스 지원 (API 변경 가능성 있음)

JSNI를 통한 수작업 자바스크립트 혼용

구글 API 연동 지원 (초기에는 구글 기어스 지원)

컴파일 타임에 이미지, CSS, 비즈니스 로직 검증으로 구현 오류 조기 발견

구글 및 서드파티 라이브러리 생태계로 기능 확장 가능[3]

사용 가능한 위젯 (버전 2.4 기준)

버전 2.4(2011년 9월) 기준으로 GWT는 다음 위젯을 기본 제공한다.[2][3]

Button, PushButton, RadioButton, CheckBox, DatePicker, ToggleButton, TextBox, PasswordTextBox, TextArea, Hyperlink, ListBox, CellList, MenuBar, Tree, CellTree, SuggestBox, RichTextArea, FlexTable, Grid, CellTable, CellBrowser, TabBar, DialogBox

사용 가능한 패널

GWT는 레이아웃 구성을 위한 다음 패널도 포함한다.[2][3]

PopupPanel, StackPanel, StackLayoutPanel, HorizontalPanel, VerticalPanel, FlowPanel, VerticalSplitPanel, HorizontalSplitPanel, SplitLayoutPanel, DockPanel, DockLayoutPanel, TabPanel, TabLayoutPanel, DisclosurePanel

GWT 2.0의 주요 신기능 (2009년 12월 8일 출시)

인브라우저 개발 모드 (기존 OOPHM)

코드 분할(Code Splitting): 개발자가 '분할 지점'을 지정하면 컴파일러가 자바스크립트를 여러 작은 청크로 나누어 초기 다운로드 크기를 줄이고 시작 시간을 단축

선언적 UI (UiBinder): XML 형식으로 UI를 선언적으로 구성해 UI 구조와 동작 구현을 분리

리소스 번들링 (ClientBundle): 이미지, CSS, 텍스트, 바이너리 등 임의 자원을 한 번에 묶어 전송함으로써 라운드트립 감소와 지연 시간 개선

플랫폼별 코드 제거로 단일 아카이브 배포 가능 (이전 버전은 플랫폼별 별도 아카이브 제공)[3]

모바일·태블릿 지원

일반 웹 앱 프레임워크로서 모바일·태블릿 앱 제작에도 활용 가능하다. 필요한 위젯과 애니메이션을 직접 만들거나 GWT용 모바일 프레임워크를 이용할 수 있다. GWT로 작성한 HTML5 앱은 태블릿과 모바일용 별도 뷰를 가질 수 있다.[3]

엔터프라이즈 환경에서의 활용

자바, 아파치 톰캣(또는 유사 웹 컨테이너), 이클립스 IDE, 인터넷 익스플로러, 국제화·지역화를 사용·지원한다. 자바 기반 GWT 리치 웹 애플리케이션은 JUnit 테스트 프레임워크와 코드 커버리지 도구로 테스트할 수 있다. 구글은 자사 제품 중 블로거(Blogger), 애드워즈(AdWords), 플라이트(Flights), 월렛(Wallet), 오퍼스(Offers), 그룹스(Groups), 인박스(Inbox) 등이 GWT 기반이라고 밝힌 바 있다.[3]

생태계·커뮤니티편집이의 제기

서드파티 라이브러리와 IDE 플러그인

GWT 기본 세트에 없는 많은 위젯이 서드파티 라이브러리로 구현되어 있다. 주요 IDE 플러그인으로는 넷빈즈용 GWT4NB, 이클립스용 Cypal Studio for GWT, JDeveloper용 GWT Developer 등이 있으며, 구글 플러그인 포 이클립스가 프로젝트 생성, 컴파일러 호출, 실행 구성 생성, 검증, 구문 강조 등 대부분의 GWT 관련 IDE 작업을 처리한다.[3]

공식 프로젝트 사이트와 로드맵

GWT 프로젝트 공식 사이트(gwtproject.org)는 문서, 소스 코드 저장소, 이슈 트래커, 로드맵, 릴리스 정보를 제공하며, 기여 희망 개발자와 변경 사항 알림 수신자를 대상으로 한다.[4]

참고 서적

다음 서적들이 GWT 학습·참고 자료로 인용된다.[2][3]

Ryan Dewsbury, 《Google Web Toolkit Applications》 (Prentice Hall, 2007)

Prabhakar Chaganti, 《Google Web Toolkit: GWT Java Ajax Programming》 (Packt Publishing, 2007)

David Geary, 《Google Web Toolkit Solutions: More Cool & Useful Stuff》 (Prentice Hall, 2007)

Robert Hanson & Adam Tacy, 《GWT in Action》 2판 (Manning, 2013)

Robert Cooper & Charlie Collins, 《GWT in Practice》 (Manning, 2008)

사용 사례·작품편집이의 제기

구글은 자사 주요 제품 다수가 GWT로 구축되었음을 공개했다.

블로거 (Blogger)

애드워즈 (AdWords)

구글 플라이트 (Google Flights)

구글 월렛 (Google Wallet)

구글 오퍼스 (Google Offers)

구글 그룹스 (Google Groups)

인박스 바이 지메일 (Inbox by Gmail)[3]

라이선스 및 법적 고지편집이의 제기

아파치 라이선스 버전 2.0(Apache License 2.0) 하에 배포되며, 공식 사이트 문서는 크리에이티브 커먼즈 저작자 표시 3.0 라이선스(CC BY 3.0)를 따른다.[1][4]

이 문서는 GGWiki AI가 공개 자료(아래 출처)를 조사해 새로 쓴 초안입니다. 틀린 내용은 편집하거나 이의 제기로 알려 주세요.

출처

4개
1Wikidata ↗https://www.wikidata.org/wiki/Q79578
2위키백과 (한국어) · 구글 웹 툴킷 ↗https://ko.wikipedia.org/wiki/%EA%B5%AC%EA%B8%80_%EC%9B%B9_%ED%88%B4%ED%82%B7
3위키백과 (영어) · Google Web Toolkit ↗https://en.wikipedia.org/wiki/Google_Web_Toolkit
4공식 사이트 ↗https://www.gwtproject.org/