최근 수정 시각 : 2024-12-17 11:29:54

GUI 라이브러리


1. 개요2. 크로스플랫폼3. 운영 체제 종속

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 홈페이지

    • C++ Builder는 훌륭한 GUI 개발 환경을 가진 IDE이며, C++를 이용하여 동일한 편의성을 누릴 수 있다. 다만 사용률이 적어 자료를 찾기가 힘들다. 또한, IDE가 한국어 팩을 지원하지 않으므로 영어에 익숙하지 않으면 개발하는 데 시간이 걸릴 수 있다.
  • 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)로 빠르게 데스크톱 환경을 만들 수 있다. AtomDiscord, 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와 비슷한 Qt Quick 모듈을 제공한다.
  • Compose Multiplatform 홈페이지: JetBrains에서 만든 GUI 라이브러리이다. Kotlin 기반이다.
  • GPUI: Atom을 만든 개발자들이 모인 Zed Industries에서 개발하는 Zed 에디터를 위해 만들어진 라이브러리다. Zed 자체도 미성숙한 만큼 GPUI도 미성숙하지만 미래를 기대하고 알아 둘 가치가 있다. Rust 기반이다. GitHub
  • Tauri : 웹뷰 기반의 크로스플래폼 GUI 라이브러리. JavaScript + Rust를 사용하여 만든다.
  • Wails : 웹뷰 기반의 크로스플래폼 GUI 라이브러리. JavaScript + Go를 사용하여 만든다.

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 기반
    • Windows Forms - 쉬운 난이도로 초보자가 접하기에 용이한 라이브러리이다. 특히 Visual Studio에서의 디자이너가 굉장히 쉽고 간단하게 되어 있어 생산성이 뛰어난 편이다.
    • WPF - XAML으로 프론트엔드를 구성하는 라이브러리이다. MVVM 패턴을 지원하며, 대표작으로는 Visual Studio 2008 이상의 버전들이 있다.
  • WinUI - Windows Runtime 기반[2] WPF와 비슷한 라이브러리이다. 플루언트 디자인을 매끄럽게 지원한다는 장점이 있다. Microsoft Store가 이를 기반으로 만들어졌다.

3.2. macOS & iOS


[1] https://en.wikipedia.org/wiki/Lazarus_Component_Library[2] C\# 또는 C++로 개발이 가능하다.