1. 개요
GUI 라이브러리는 GUI 환경에서 실행되는 응용 프로그램의 화면 출력부를 구현하기 위하여 사용되는 라이브러리이다.2. 크로스플랫폼
- .NET MAUI - Microsoft의 공식 프레임워크.
- Uno Platformhttp://platform.uno/ - .NET MAUI와 비슷한 오픈 소스 프로젝트.
- Avalonia UI#
- Xamarin - 2024년 5월을 기점으로 더이상 지원되지 않는다.
- Flutter
- GTK - C, C++ 뿐만 아니라 .NET Framework, Python, Vala 언어 등을 모두지원한다.
- wxWidgets - 크로스플랫폼 C++ GUI 라이브러리.
- C++ Builder 홈페이지
- nana C++ Library - 현대적인 C++(C++11/14/17) 문법을 사용하는 GUI 라이브러리. Microsoft Windows, Linux(X11), FreeBSD(X11)) 지원.
- Dear ImGUI - 크로스플랫폼 C++ GUI 라이브러리. 단 Android, DirectX나 OpenGL 등의 별도의 렌더링 라이브러리 안에서만 작동한다.
- VCL(Visual Component Library) - 오브젝트 파스칼 언어를 사용하는 개발환경인 델파이에서 제공되는 GUI 라이브러리. Microsoft Windows, macOS, Linux 뿐만 아니라 Android, iOS 환경도 지원하며 델파이는 RAD 툴로서 빠르게 강력한 GUI 개발이 가능하다.
- LCL (Lazarus Component Library)은 Lazarus IDE의 visual software component library 이다. 쉽게 생각하면 Delphi와 VCL의 관계를 Delphi와 LCL의 관계로 보면 된다. 많은 부분이 VCL과 이름과 기능이 비슷하다.[1] LCL은 GTK2, Qt4, Qt5, Qt6, fpGUI for BSD, Linux, macOS and Windows, Win32 for Windows, Cocoa for macOS, MUI for Amiga를 지원한다고 한다.
- Electron - 웹 개발 기술인 HTML + CSS + JavaScript(Node.js)로 빠르게 데스크톱 환경을 만들 수 있다. Atom과 Discord, Visual Studio Code가 Electron을 사용한다. 단점은 구현 방식이 일단 웹 브라우저 하나를 띄워놓고 시작하는 것이기 때문에 기본 용량이 크고 퍼포먼스가 떨어진다는 점. 필요하다면 프론트엔드에만 Electron을 쓰고, IPC와 FFI 혹은 wasm을 이용해 백엔드는 C/C++ 등으로 대체하는 것도 가능하다. MS가 GitHub를 인수한 이후부터는 Electron을 밀어주고 있다.
- React: 자바스크립트를 마크업 언어로 개조한 JSX를 쓴다.
- Qt 라이브러리 홈페이지
- Qt는 Windows, macOS, Linux를 모두 지원하는 C++ 프레임워크로, 단순한 GUI 라이브러리가 아니라 자체적으로 네트워크, 파일 및 DB 처리, XML 지원, String 클래스 등 방대한 기능들을 가지고 있다.
- GUI Designer를 제공하며, 윈도 환경에서는 Visual Studio와 연동된다.
- .NET Framework의 WPF와 비슷한 QtQuick을 제공한다. QML을 시작합니다.
- Compose Multiplatform 홈페이지: JetBrains에서 만든 GUI 라이브러리이다. Kotlin 기반이다.
- GPUI: Atom을 만든 개발자들이 모인 Zed Industries에서 개발하는 Zed 에디터를 위해 만들어진 라이브러리다. Zed 자체도 미성숙한 만큼 GPUI도 미성숙하지만 미래를 기대하고 알아 둘 가치가 있다. Rust 기반이다. GitHub
- Tauri : 웹뷰 기반의 크로스 플래폼 GUI 라이브러리. JavaScript + Rust를 사용하여 만든다.
- Wails : 웹뷰 기반의 크로스 플래폼 GUI 라이브러리. JavaScript + Go를 사용하여 만든다.
C++ Builder는 훌륭한 GUI 개발 환경을 가진 IDE이며, C++를 이용하여 동일한 편의성을 누릴 수 있다. 다만 사용률이 적어 자료를 찾기가 힘들다. 또한, IDE가 한국어팩을 지원하지 않으므로 영어에 익숙하지 않으면 개발하는데 시간이 걸릴 수 있다.
2.1. Java
Java를 위하여 개발된 GUI 라이브러리. 다른 GUI 라이브러리의 Java 바인딩은 여기에 추가하지 않는다.- AWT / Swing - Java 런타임 기본 내장 GUI 라이브러리.
- JavaFX - AWT와 Swing을 대체하기 위해 만들어진 표준 GUI 라이브러리.
- SWT - 이클립스에서 사용된다. 홈페이지
SwingX- Swing을 대체하기 위해 시작된 오픈소스 라이브러리. 다만 2010년부터 개발이 중단되었다.
3. 운영체제 종속
3.1. Microsoft Windows
- Windows API - 윈도우에서 제공되는 기본 API 세트. C언어 함수들을 기반으로, C++ 객체와 COM 개체를 사용할 수 있다.
- MFC - C++ 라이브러리. Windows API를 기반으로 한다.
- WTL - MS에서 제공하는 ATL 기반의 경량 GUI 라이브러리. 이쪽은 MFC와 달리 오픈 소스이다.
- .NET Framework WinForms / WPF
- .NET Framework 플랫폼에는 Windows Forms와 WPF의 두 가지 GUI 라이브러리가 포함되어 있다.
- Windows Forms는 쉬운 난이도 덕분에 초보자가 접하기에도 용이하다. 또한 C#은 C++과는 비교도 되지 않는 높은 생산성을 자랑하는 언어이며, 기존 윈도용 C/C++ 프로젝트나 라이브러리와의 연동도 수월하므로 일단 핵심 코드는 그대로 둔 채 껍데기부터 차차 교체할 수도 있다.
- 닷넷 프레임워크로 개발된 프로그램의 대표작이라면 Visual Studio 중 2008 이후의 버전들(WPF로 개발되었다)을 들 수 있을 것이다.
3.2. macOS & iOS
[1] https://en.wikipedia.org/wiki/Lazarus_Component_Library