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).