Skip to content

Week14

Week 14 Group assignment:

  • Compare as many tool options as possible.
  • Document your work on the group work page and reflect on your individual page what you learned.

GUI App Development Environments Comparison

I let Claude to make comparison. The prompt was,

List development environments for building GUI apps on PC (Mac) and 
smartphones. Keep it general — don't tailor to my background. Include 
Processing, p5.js, and openFrameworks. Present as a markdown comparison table with columns: Environment, Language, Target OS, UI Approach, Difficulty, Connectivity, Primary Use Case. Group by category. Output in English as a downloadable .md file.

Native Desktop

Environment Language Target OS UI Approach Difficulty Connectivity Primary Use Case
Xcode (AppKit / SwiftUI) Swift, Objective-C macOS Declarative (SwiftUI) or imperative (AppKit) Medium Full native APIs (network, Bluetooth, USB, file system) Native macOS desktop applications
Visual Studio (WinUI / WPF / WinForms) C#, C++, VB.NET Windows XAML-based declarative or form designer Medium Full native Windows APIs Native Windows desktop applications
Qt / Qt Creator C++, QML (with Python via PyQt/PySide) Windows, macOS, Linux Widgets (imperative) or QML (declarative) Medium–Hard Broad native access incl. serial, network, Bluetooth Cross-platform desktop apps, industrial/embedded GUIs
GTK C, Python, Rust, Vala Linux (primary), Windows, macOS Widget tree Medium Native APIs via platform bindings Linux-first desktop applications
wxWidgets C++, Python, others Windows, macOS, Linux Native widgets wrapped per-OS Medium Native APIs through bindings Cross-platform apps with native look & feel

Native Mobile

Environment Language Target OS UI Approach Difficulty Connectivity Primary Use Case
Xcode (SwiftUI / UIKit) Swift, Objective-C iOS, iPadOS Declarative (SwiftUI) or imperative (UIKit) Medium Full iOS APIs (BLE, Wi-Fi, HTTP, sensors) Native iPhone/iPad apps
Android Studio Kotlin, Java Android Jetpack Compose (declarative) or XML layouts Medium Full Android APIs (BLE, Wi-Fi, NFC, sensors) Native Android apps

Cross-Platform Mobile / Desktop

Environment Language Target OS UI Approach Difficulty Connectivity Primary Use Case
Flutter Dart iOS, Android, macOS, Windows, Linux, Web Declarative widget tree, custom rendering engine Medium HTTP, WebSocket, BLE (via plugins), platform channels for native Single codebase across mobile & desktop
React Native JavaScript, TypeScript iOS, Android (+ desktop via community forks) Declarative components mapped to native widgets Medium HTTP, WebSocket, BLE and sensors via libraries JS teams building mobile apps
.NET MAUI C# iOS, Android, macOS, Windows XAML + MVVM, native controls per platform Medium Full .NET networking, BLE, sensors via community toolkits Cross-platform apps for C#/.NET developers
Kotlin Multiplatform (Compose Multiplatform) Kotlin Android, iOS, desktop, web Declarative (Jetpack Compose) shared across targets Medium–Hard Platform-specific via expect/actual; HTTP via Ktor Sharing business logic and UI across platforms
Electron JavaScript, TypeScript, HTML, CSS Windows, macOS, Linux Web technologies in a Chromium shell Easy–Medium Full web stack + Node.js (serial, BLE via node modules) Desktop apps built with web tech
Tauri Rust (backend), HTML/JS/TS (frontend) Windows, macOS, Linux (+ mobile preview) Web frontend + Rust backend, native webview Medium Rust networking/serial + web fetch Lightweight alternative to Electron
Ionic / Capacitor JavaScript, TypeScript iOS, Android, Web, Desktop (via Electron) Web UI in a native shell Easy HTTP, BLE, sensors via Capacitor plugins Web developers targeting mobile stores

Creative Coding / Visual Prototyping

Environment Language Target OS UI Approach Difficulty Connectivity Primary Use Case
Processing Java (Processing flavor), Python (mode) Windows, macOS, Linux; Android via mode Immediate-mode canvas (setup()/draw()) Easy Serial, OSC, HTTP via libraries Visual art, data visualization, teaching programming
p5.js JavaScript Any modern browser (desktop & mobile) Canvas/SVG drawn each frame Easy WebSocket, Web Serial, Web Bluetooth, fetch Creative coding for the web, interactive art
openFrameworks C++ Windows, macOS, Linux, iOS, Android Immediate-mode drawing with addon ecosystem Medium–Hard Serial, OSC, networking, Bluetooth via addons Performance-intensive media art, installations
Cinder C++ Windows, macOS, iOS Immediate-mode C++ framework Hard Networking, serial, audio/video pipelines High-performance graphics & interactive work
TouchDesigner Visual node graph (+ Python) Windows, macOS Node-based visual programming Easy–Medium OSC, MIDI, DMX, serial, network Real-time interactive media, installations

Game Engines (often used for rich GUIs)

Environment Language Target OS UI Approach Difficulty Connectivity Primary Use Case
Unity C# Windows, macOS, Linux, iOS, Android, Web, consoles Scene-based with UI Toolkit / uGUI Medium HTTP, WebSocket, BLE via plugins Games and interactive 3D/AR apps
Unreal Engine C++, Blueprints Windows, macOS, Linux, iOS, Android, consoles UMG (widget blueprints) Hard HTTP, sockets, plugins for BLE/serial High-fidelity games, visualization, virtual production
Godot GDScript, C#, C++ Windows, macOS, Linux, iOS, Android, Web Scene/node tree with Control nodes Easy–Medium HTTP, WebSocket, multiplayer APIs Indie games, 2D/3D apps

Rapid / Low-Code GUI

Environment Language Target OS UI Approach Difficulty Connectivity Primary Use Case
Python + Tkinter Python Windows, macOS, Linux Widget tree (standard library) Easy HTTP/sockets via stdlib; serial via pyserial Quick internal tools and utilities
Python + PySide/PyQt Python Windows, macOS, Linux Qt widgets or QML Medium Full Qt networking/serial/Bluetooth Desktop tools with professional UI
Dear PyGui / Dear ImGui Python / C++ Windows, macOS, Linux Immediate-mode GUI Easy–Medium Via host language libraries Debug tools, dashboards, engine editors
LabVIEW G (graphical dataflow) Windows, macOS, Linux Visual dataflow wiring Medium GPIB, serial, TCP, instrument drivers Instrumentation, test & measurement
MATLAB App Designer MATLAB Windows, macOS, Linux Drag-and-drop component designer Easy Serial, TCP/IP, instrument toolboxes Engineering and scientific GUIs

Notes on the Columns

  • Difficulty reflects the learning curve to ship a non-trivial app, not the ceiling of what’s possible.
  • Connectivity highlights typical I/O (network, Bluetooth, serial, sensors) since this often decides environment choice. “Via plugins/libraries” means capability exists but isn’t built in.
  • Target OS lists commonly supported platforms; some environments have community ports beyond what’s listed.
  • Web-based options (p5.js, Electron, Tauri, Ionic) run on mobile browsers too, but may be limited by browser APIs (e.g. Web Bluetooth isn’t available on iOS Safari).