WxWidgets
1. 개요
wxWidgets는 1992년 줄리안 스마트가 시작한 C++ 기반의 크로스 플랫폼 GUI 라이브러리이다. 다양한 프로그래밍 언어에 대한 바인딩을 제공하며, 윈도우, 리눅스/유닉스, macOS 등 여러 운영 체제를 지원한다. GNU 약소 일반 공중 사용 허가서와 유사한 라이선스로 배포되며, 네이티브 위젯을 사용하여 각 플랫폼에 맞는 인터페이스를 제공한다. GUI 개발 외에도 프로세스 간 통신, 소켓 네트워킹 기능 등을 포함하며, Code::Blocks, wxFormBuilder 등의 RAD 도구를 사용할 수 있다. 0 A.D., Audacity, FileZilla 등 다양한 애플리케이션에서 사용되고 있다.
이미지 준비중입니다.
| 장르 | 개발 라이브러리 |
|---|---|
| 라이선스 | wxWidgets 라이선스 |
| 웹사이트 | www.wxwidgets.org |
| 저자 | 줄리앙 스마트 |
|---|---|
| 개발자 | 다양한 개발자 및 기여자 |
| 프로그래밍 언어 | C++ |
| 운영 체제 | 크로스 플랫폼 |
| 최신 안정화 버전 | 3.2.4 |
|---|---|
| 이전 안정화 버전 | 2.9.5 |
-
위젯 툴킷 -
Tk (소프트웨어)
Tk는 Tcl 스크립팅 언어의 크로스 플랫폼 GUI 툴킷으로, 다양한 플랫폼 이식과 여러 프로그래밍 언어 바인딩을 지원하며 사용자 정의 가능한 위젯들을 제공한다. -
위젯 툴킷 -
윈도우 API
윈도우 API는 마이크로소프트 윈도우 운영 체제에서 응용 프로그램이 시스템 기능에 접근하도록 돕는 인터페이스 집합이며, 다양한 버전으로 발전해 왔고, 현재 Win32가 널리 사용되며, 유연성을 제공하지만 복잡하다는 단점을 보완하기 위해 다양한 래퍼 라이브러리가 개발되었다. -
자유 라이브러리 -
Tk (소프트웨어)
Tk는 Tcl 스크립팅 언어의 크로스 플랫폼 GUI 툴킷으로, 다양한 플랫폼 이식과 여러 프로그래밍 언어 바인딩을 지원하며 사용자 정의 가능한 위젯들을 제공한다. -
자유 라이브러리 -
SQLite
SQLite는 D. 리처드 히프가 설계한 서버리스 구조의 임베디드 SQL 데이터베이스 엔진으로, 별도의 DBMS 없이 프로그램에 통합되어 작동하며 전체 데이터베이스를 단일 파일로 저장하는 특징이 있고, 다양한 운영체제와 환경에서 널리 사용된다. -
1992년 소프트웨어 -
윈도우 3.1x
윈도우 3.1x는 마이크로소프트가 개발한 운영 체제 시리즈로, 윈도우 3.1을 시작으로 다양한 버전이 출시되었으며, 1,000만 개 이상 판매되었고, 간체자 지원, 업무용 버전, 다양한 추가 기능, 인터넷 익스플로러 지원 등의 특징을 가진다. -
1992년 소프트웨어 -
마이크로소프트 액세스
마이크로소프트 액세스는 1992년 출시된 데이터베이스 관리 시스템으로, 테이블, 쿼리, 폼 등을 생성하고 VBA를 통해 솔루션을 개발하며, 윈도우에서 사용 가능하고 다양한 데이터 형식과 통합된다.
2. 역사
wxWidgets(원래 이름은 wxWindows)는 1992년 에든버러 대학교의 Julian Smart영어가 개발을 시작했다. wxWindows라는 이름에서 'w'는 Windows를, 'x'는 X Window System을 의미했다. 줄리안 스마트는 1986년에 세인트앤드루스 대학교에서 계산과학 우등 학위를 받았으며, 현재도 핵심 개발자로 활동하고 있다.
2004년 2월 20일, wxWindows 개발팀은 프로젝트 이름을 wxWidgets로 변경한다고 발표했다. 이는 마이크로소프트가 줄리안 스마트에게 영국 내 'Windows' 상표권을 존중해 달라고 요청했기 때문이다.
주요 버전 출시일은 다음과 같다.
wxWidgets는 2006년부터 구글 코드 서머에 참여해왔다.
3. 라이선스
wxWidgets는 자체 제작된 'wxWindows 라이선스' 하에 배포된다. 이 라이선스는 GNU 약소 일반 공중 사용 허가서(LGPL)와 유사하지만, wxWidgets를 사용하여 만든 이진 파일 형태의 파생 저작물을 소스 코드를 공개하지 않고도 사용자의 자체 조건으로 배포할 수 있다는 예외 조항이 있다.
이 소프트웨어 라이선스는 자유 소프트웨어 라이선스로, 자유 소프트웨어 재단(FSF)과 오픈 소스 이니셔티브(OSI) 모두의 승인을 받았다. 따라서 wxWidgets는 자유 소프트웨어가 된다.
4. 기능
wxWidgets 라이브러리는 기본적으로 C++로 작성되었으며, 다양한 프로그래밍 언어에서 사용할 수 있도록 언어 바인딩을 제공한다.
wxWidgets는 네이티브 위젯(native widget)을 사용하는 툴킷으로 알려져 있다. 이는 그래픽을 직접 그려 위젯 모양을 흉내 내는 대신, 각 운영체제(플랫폼)가 제공하는 네이티브 위젯 위에 얇은 추상화 계층(thin abstraction)을 제공하는 방식이다. 대상 플랫폼의 네이티브 위젯을 활용함으로써, 스윙(자바)처럼 모든 것을 직접 그리는 툴킷보다 더 자연스러운 인터페이스를 제공할 뿐만 아니라 성능 향상 및 다른 이점도 기대할 수 있다.
이 도구킷은 단순히 GUI 개발에만 국한되지 않으며, 프로세스 간 통신(IPC) 계층, 소켓 네트워킹 기능 등도 내장하고 있다.
wxWidgets는 다양한 운영체제를 지원한다.
임베디드 시스템용 버전도 개발 중이다.
wxWidgets는 여러 산업 분야에서 활용되고 있다. 대표적으로 제록스, AMD, 록히드 마틴, NASA(미국 항공우주국), 해군분석센터(Center for Naval Analyses) 등에서 사용된다. 또한 다트머스 의과대학, 국립 인간 유전체 연구소, 국립 생명공학 정보센터와 같은 공공 부문 및 교육 기관에서도 사용되고 있다. 이 외에도 수많은 오픈 소스 프로젝트와 개인 개발자들이 wxWidgets를 사용하고 있다.
5. 공식 지원
wxWidgets는 다양한 운영체제 플랫폼과 컴파일러 환경을 공식적으로 지원한다. 자세한 지원 범위는 아래 하위 섹션에서 확인할 수 있다.
5.2. 지원 컴파일러
wxWidgets는 다음 컴파일러에서 제대로 작동하는 것으로 공식적으로 확인되었다.
| 툴킷 | 컴파일러 | 버전 |
|---|---|---|
| wxMSW | 마이크로소프트 비주얼 스튜디오 – 비주얼 C++ | 5.0+ |
| 볼랜드 C++ (3.1.5에서 지원 중단) | 5.5+ | |
| C++빌더 | 2006+ | |
| 왓콤 C++, 오픈 왓콤 | 10.6+ | |
| 코드워리어 | 7+ | |
| Cygwin | 1.5+ | |
| MinGW | 2.0+ | |
| 디지털 마스 C/C++ 컴파일러 | 8.40+ | |
| wxGTK | g++ | 2.95+ |
| Clang++ | 3.3+ | |
| 인텔 C++ 컴파일러 | 9.1+ | |
| 선 스튜디오 C/C++ | 5.9 | |
| HP aC++ | 3.8 | |
| IBM XL C/C++ | 8.0 |
6. 프로그래밍 언어 바인딩
wxWidgets 라이브러리는 C++로 구현되었으며, 널리 사용되는 많은 프로그래밍 언어에 대해 언어 바인딩을 제공한다. 지원하는 프로그래밍 언어로는 파이썬 (wxPython), 얼랭 ([https://web.archive.org/web/20100819232924/http://sourceforge.net/apps/mediawiki/wxerlang/index.php?title=Main_Page wxErlang]), 하스켈 (wxHaskell), Tcl ([https://web.archive.org/web/20080211101523/http://membres.lycos.fr/awaken/ wxTCL]), 루아 ([https://web.archive.org/web/20100817175822/http://wxlua.sourceforge.net/ wxLua]), 펄 (wxPerl), 루비 ([http://webarchive.loc.gov/all/20090306104458/http://wxruby.rubyforge.org/wiki/wiki.pl wxRuby]), 스몰토크 ([https://web.archive.org/web/20100913031514/http://www.wxsqueak.org/ wxSqueak]), 커먼 리스프 ([https://web.archive.org/web/20090430131620/http://www.wxcl-project.org/language/en/ wxCL]), 베이직 ([http://wxbasic.sourceforge.net/ wxBasic]), C ([http://wxc.sourceforge.net/ wxC]), D ([https://web.archive.org/web/20100820021606/http://wxd.sourceforge.net/ wxD]), 유포리아 ([http://wxeuphoria.sourceforge.net/ wxEuphoria]), 닷넷 프레임워크 ([https://web.archive.org/web/20100825110129/http://wxnet.sourceforge.net/ wx.NET]), 자바 ([http://wx4j.sourceforge.net/ wx4j]), 자바스크립트 ([http://www.wxjavascript.net/ wxJavaScript] / [http://gluescript.sourceforge.net/ GLUEScript]) 등이 있다. 1995년에 만든 wxWindows (버전 1)의 비호환 분기를 이용하는 라켓도 있으며, 이 툴킷은 단순히 라이브러리 바인딩을 제공하는 다른 언어와는 달리 언어 런타임 (쓰레기 수집, 자원 관리)에 통합되어 있다.
wxWidgets는 네이티브 모드 툴킷으로 잘 알려져 있는데, 이는 원시 그래픽을 이용하여 위젯 표현을 에뮬레이션하는 대신 플랫폼의 네이티브 위젯에 대한 얇은 추상화(thin abstraction)를 제공하기 때문이다. 대상 플랫폼에 이러한 네이티브 위젯을 이용하면 스윙 (자바의 경우)과 같은 도구킷보다 더 네이티브하게 보이는 인터페이스뿐 아니라 성능 향상과 다른 이점도 제공한다.
이 도구킷은 GUI 개발에만 국한되지 않으며 프로세스 간 통신 계층, 소켓 네트워킹 기능 등도 내장하고 있다.
7. wxWidgets을 위한 RAD 도구 및 IDE
다수의 빠른 애플리케이션 개발 (RAD) 및 통합 개발 환경 (IDE) 도구를 사용할 수 있다. 주요 도구는 다음과 같다:
* wxDev-C++
* Code::Blocks (wxSmith 플러그인을 통해)
* CodeLite (wxCrafter 플러그인을 통해)
* wxGlade
* 보아 컨스트럭터 (파이썬)
* wxFormBuilder
8. wxWidgets를 사용하는 애플리케이션
wxWidgets를 사용하는 주요 애플리케이션은 다음과 같다.
* 0 A.D. – 에이지 오브 엠파이어와 유사한 자유-오픈 소스 비디오 게임
* Amaya – 웹 저작 도구
* aMule – P2P 파일 공유 애플리케이션
* ActivePresenter – 스크린 레코더, 비디오 편집기 및 e-러닝 애플리케이션
* Audacity – 크로스 플랫폼 사운드 편집기
* BitTorrent – P2P 파일 공유 애플리케이션
* Berkeley Open Infrastructure for Network Computing – 오픈 소스 미들웨어 시스템
* Code::Blocks – C/C++ IDE
* CodeLite – 간단한 C++ 편집기 (플러그인으로 구현된 무료 도구 모음)
* FileZilla – FTP 클라이언트
* FreeFileSync – 무료 오픈 소스 파일 동기화 소프트웨어
* GrandOrgue – 가상 파이프 오르간 시뮬레이터
* Guayadeque Music Player – 데이터베이스를 갖춘 음악 플레이어
* Hollywood – RapaGUI 플러그인에서 wxWidgets 사용
* KiCad – 전자 설계 자동화 (EDA)를 위한 무료 소프트웨어 스위트
* RapidSVN – Subversion 클라이언트
* TortoiseCVS – CVS 클라이언트