최근 수정 시각 : 2023-11-12 18:39:07

GUI 라이브러리


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

1. 개요

GUI 라이브러리는 GUI 환경에서 실행되는 응용 프로그램의 화면 출력부를 구현하기 위하여 사용되는 라이브러리이다.

2. 크로스플랫폼

  • Uno Platform -

    • Uno Platform is a free and open-source development platform that allows you to build single codebase applications for Windows, iOS, Android, WebAssembly, macOS, and Linux using C# and XAML. Easily create applications that look and feel native to each platform without having to rewrite the codebase from scratch.
  • .NET MAUI
  • Xamarin
  • Avalonia #

    • WPF의 현대적 재해석을 기치로 삼는 .NET 기반의 크로스플랫폼 GUI 라이브러리. WPF, Xamarin, .NET MAUI 에서 GUI를 디자인 하듯이 XAML 디스플레이 마크업 언어를 사용하지만 HTML5 와 CSS의 이념과 ReactiveX적인 요소도 받아들여 변형하였기 때문에 완전히 호환되지는 않다. 기본 컴포넌트들은 윈도우, 맥 OS, 리눅스, iOS, 안드로이드, WebAssembly 모두를 대상으로 제공한다. 오픈소스이고 소스 자체는 MIT 라이센스로 제공되며 상업적 지원 라이센스는 별개이다. GitHub 에서 기여할 수 있다. #
  • 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 뿐만 아니라 안드로이드, iOS 환경도 지원하며 델파이는 RAD 툴로서 빠르게 강력한 GUI 개발이 가능하다.
  • 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 기반이다.

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