GUI(Graphical User Interface)란?
그래픽 아이콘의 클릭을 통해 기기와 상호작용 하는 방식이다. 문자 입/출력으로 상호작용하는 CLI(Command Line Interface) 방식보다 쉬운 인터페이스를 만들고자 등장하였다.
GUI 라이브러리란?
GUI(Graphical User Interface) 환경에서 실행되는 응용 프로그램의 화면 출력부를 구현하기 위하여 사용되는 라이브러리이다.
쉽게 말하면, 그래픽 기반의 어플리케이션을 만들기 위한 많은 부분을 구현하여 라이브러리로 제공하는 것이다. 혹은 GUI 프레임워크라 부르는 것들도 있다.
(라이브러리와 프레임워크는 엄밀히는 다른 용어로, 이 둘을 구분하기 위해서는 제어의 역전이 일어나는가를 따지기도 하는데.. 일단은 둘 다 남이 만들어놓은 코드를 가져다 쓸 수 있다라는 점에서 동일하다고 간주하도록 하겠다.)
GUI 라이브러리의 종류
GUI 라이브러리의 종류는 크게 운영체제에 종속이 되는가/되지 않는가로 구분할 수 있다.
1. 운영체제에 종속
Microsoft Windows
- Windows API - 윈도우에서 제공되는 기본 API 세트. C언어 함수들을 기반으로, C++ 객체와 COM 개체를 사용할 수 있다.
-
.NET Framework WinForms / WPF(Windows Presentation Foundation)
-
.NET Framework 플랫폼에는 Windows Forms와 WPF의 두 가지 GUI 라이브러리가 포함되어 있다.
- WPF(Windows Presentation Foundation)은 무료 오픈소스 그래픽 라이브러리로, .Net Framework 3.0의 일부로 처음 출시되었다.
-
macOS & iOS
- SwiftUI - iOS, tvOS, macOS, 및 watchOS용 유저 인터페이스 개발을 위한 크로스 플랫폼 프레임워크이다. Apple이 2019년 첫 출시한 이후 가파르게 진화하고 있다.
2. 운영체제 비 종속
Java
Java 언어를 위하여 개발된 GUI 라이브러리. 다른 GUI 라이브러리의 Java 언어 바인딩은 여기에 추가하지 않는다.
-
JavaFX - AWT와 Swing을 대체하기 위해 만들어진 표준 GUI 라이브러리.
크로스 플랫폼
다양한 운영체제/동작 환경을 지원하는 라이브러리들이다. 상용으로 쓰려면 라이선스를 확인해야 한다.
GUI 라이브러리 | 가격 | 플랫폼 | 언어 바인딩 | 라이선스 | 특징 |
Qt | 무료/유료 | UNIX/Unix-like (X11, Wayland), macOS, Windows, Windows UWP, Android, IOS/tvOS/watchOS, WebAssembly, Haiku, Plasma Mobile, Blackbery | C++, Python, QML | GPL/LGPL/상용 | - 오픈소스 C++개발 프레임워크 - C++ 개발에 필요한 온갖 기능(UI, XML, 네크워크 등)을 제공하는 종합 프레임워크 - 모듈별 라이센스 상이 |
wxWidgets | 무료 | Windows, Linux, Mac, BSD, Solaris, AIX, OS2 | wxPython, wxLua, wxRuby, more.. | wxWidgets Licence | 30년된 오픈소스 라이브러리 |
Avalonia | 무료 | Windows, Linux, Mac, Pi, Android, iOS | C#, .NET, XAML | MIT | .NET 기반 UI framework |
Quasar Framework | 무료 | Windows, Linux, Mac, Web, Android, Blueberry, iOS, Windows Phone | Javascript, Typescript | MIT | 오픈소스 Vue.JS 기반 프레임워크 (Vue.JS는 컴포넌트 기반 프론트엔드 JavaScript 프레임워크로, 웹 개발에 사용됨) |
Kivy | 무료 | Windows, Linux, Mac, iOS, Android, Raspberry Pi | Python | MIT | 오픈 소스 파이썬 프레임워크 |
GTK+ | 무료 | Windows, Linux, Mac | C, JavaScript, Perl, Python, Rust, Vala | LGPL | GNOME 프로젝트에서 주로 개발됨 |
Flutter | 무료 | Android, iOS, Linux, Mac, Windows, Google Fuchsia, Web platform | Dart | New BSD | Google에서 만든 오픈소스 UI software development kit |
Electron | 무료 | Windows, Linux, Mac | JavaScript, HTML, CSS | MIT | - GitHub에서 만든 오픈소스 소프트웨어 프레임워크 - 웹 기술을 이용하여 Desktop GUI Application을 개발할 수 있게 함 |
React Native | 무료 | Android, Android TV, iOS, macOS, tvOS, Web, Windows, UWP, VR | JavaScript | MIT | 페이스북에서 만든 오픈소스 UI 소프트웨어 프레임워크 |
FLTK | 무료 | Windows, macOS, UNIX/Linux (X11) | C++, Lua, Perl, Python, Ruby | LGPL | 경량 위젯 라이브러리 |
참고
https://namu.wiki/w/GUI%20%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC
https://en.wikipedia.org/wiki/Graphical_user_interface
https://en.wikipedia.org/wiki/Windows_Presentation_Foundation
https://cocoacasts.com/swiftui-fundamentals-what-is-swiftui
https://www.slant.co/topics/983/~best-cross-platform-gui-toolkits#12
'개발' 카테고리의 다른 글
인코딩과 디코딩 (0) | 2023.02.10 |
---|---|
[BAT] 배치파일 명령어 예제(파일 복사/삭제, 디렉토리 생성/삭제, 인자받기) (0) | 2022.02.24 |