[[분류:프로그래밍]][[분류:라이브러리]] [목차] == 개요 == GUI 라이브러리는 [[GUI]] 환경에서 실행되는 [[응용 프로그램]]의 화면 출력부를 구현하기 위하여 사용되는 [[라이브러리]]이다. == 크로스플랫폼 == * [[http://platform.uno/|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]] * [[Microsoft .NET#Xamarin]|Xamarin]] * Avalonia[[https://avaloniaui.net/|#]] WPF의 현대적 재해석을 기치로 삼는 .NET 기반의 크로스플랫폼 GUI 라이브러리. WPF, Xamarin, .NET MAUI 에서 GUI를 디자인 하듯이 XAML 디스플레이 마크업 언어를 사용하지만 HTML5 와 CSS의 이념과 ReactiveX적인 요소도 받아들여 변형하였기 때문에 완전히 호환되지는 않다. 기본 컴포넌트들은 윈도우, 맥 OS, 리눅스, iOS, 안드로이드, WebAssembly 모두를 대상으로 제공한다. 오픈소스이고 소스 자체는 MIT 라이센스로 제공되며 상업적 지원 라이센스는 별개이다. GitHub 에서 기여할 수 있다.[[https://github.com/avaloniaui/avalonia|#]] * [[Flutter(프레임워크)|Flutter]] * [[https://gtk.org/|GTK]] - C, C++ 뿐만 아니라 [[.NET Framework]], [[Python]], Vala 언어 등을 모두지원한다. * [[wxWidgets]] - 크로스플랫폼 C++ GUI 라이브러리. * C++ Builder [[https://www.embarcadero.com/products/cbuilder|홈페이지]] C++ Builder는 훌륭한 GUI 개발 환경을 가진 [[통합 개발 환경|IDE]]이며, C++를 이용하여 동일한 편의성을 누릴 수 있다. 다만 사용률이 적어 자료를 찾기가 힘들다. 또한, IDE가 한국어팩을 지원하지 않으므로 영어에 익숙하지 않으면 개발하는데 시간이 걸릴 수 있다. * [[http://nanapro.org|nana C++ Library]] - 현대적인 [[C++]](C++11/14/17) 문법을 사용하는 GUI 라이브러리. [[Microsoft Windows]], [[Linux]]([[X11]]), [[FreeBSD]]([[X11]])) 지원. * [[https://github.com/ocornut/imgui|Dear ImGUI]] - 크로스플랫폼 C++ GUI 라이브러리. 단 Android, DirectX나 OpenGL 등의 별도의 렌더링 라이브러리 안에서만 작동한다. * VCL(Visual Component Library) - [[파스칼(프로그래밍 언어)|오브젝트 파스칼]] 언어를 사용하는 개발환경인 [[파스칼(프로그래밍 언어)#델파이|델파이]]에서 제공되는 GUI 라이브러리. [[Microsoft Windows]], [[macOS]], [[Linux]] 뿐만 아니라 [[안드로이드]], [[iOS]] 환경도 지원하며 델파이는 RAD 툴로서 빠르게 강력한 GUI 개발이 가능하다. * [[Electron(프레임워크)|Electron]] - 웹 개발 기술인 [[HTML]] + [[CSS]] + [[JavaScript]]([[Node.js]])로 빠르게 데스크톱 환경을 만들 수 있다. [[Atom(에디터)|Atom]]과 [[Discord]], [[Visual Studio Code]]가 Electron을 사용한다. 단점은 구현 방식이 일단 [[웹 브라우저]] 하나를 띄워놓고 시작하는 것이기 때문에 기본 용량이 크고 퍼포먼스가 떨어진다는 점. 필요하다면 프론트엔드에만 Electron을 쓰고, IPC와 [[FFI]] 혹은 [[WebAssembly|wasm]]을 이용해 백엔드는 C/C++ 등으로 대체하는 것도 가능하다. MS가 [[GitHub]]를 인수한 이후부터는 Electron을 밀어주고 있다. * [[React(라이브러리)|React]]: 자바스크립트를 마크업 언어로 개조한 JSX를 쓴다. * [[Qt(프레임워크)|Qt]] 라이브러리 [[https://www.qt.io/developers|홈페이지]] * Qt는 Windows, macOS, Linux를 모두 지원하는 C++ 프레임워크로, 단순한 GUI 라이브러리가 아니라 자체적으로 네트워크, 파일 및 DB 처리, XML 지원, String 클래스 등 방대한 기능들을 가지고 있다. * GUI Designer를 제공하며, 윈도 환경에서는 [[Visual Studio]]와 연동된다. * [[.NET Framework]]의 WPF와 비슷한 QtQuick을 제공한다. [[http://blog.qt.digia.com/blog/category/qml_start/|QML을 시작합니다.]] * [[https://www.jetbrains.com/lp/compose-mpp/|Compose Multiplatform]]: [[JetBrains]]에서 만든 GUI 라이브러리이다. [[Kotlin]] 기반이다. === [[Java]] === Java 언어를 위하여 개발된 GUI 라이브러리. 다른 GUI 라이브러리의 Java 언어 바인딩은 여기에 추가하지 않는다. * AWT / Swing - [[Java]] 런타임 기본 내장 GUI 라이브러리. * JavaFX - AWT와 Swing을 대체하기 위해 만들어진 표준 GUI 라이브러리. * SWT - [[이클립스(통합 개발 환경)|이클립스]]에서 사용된다. [[http://www.eclipse.org/swt/|홈페이지]] * --SwingX-- - Swing을 대체하기 위해 시작된 오픈소스 라이브러리. 다만 2010년부터 개발이 중단되었다. == 운영체제 종속 == === [[Microsoft Windows]] === * [[Windows API]] - 윈도우에서 제공되는 기본 API 세트. [[C언어]] 함수들을 기반으로, [[C++]] 객체와 COM 개체를 사용할 수 있다. * [[MFC]] - C++ 라이브러리. [[Windows API]]를 기반으로 한다. * [[https://wtl.sourceforge.io/|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로 개발되었다)을 들 수 있을 것이다. === [[macOS]] & [[iOS]] === * [[Cocoa API]]