Week 15: Interface and Application Programming
Tasks
- Compare as many tool options as possible.
As makers, Liam and I have much experience in the microcontroller world but one of our weakpoints is in developing applications and GUI, so this week we thought we would dive into some options at developing these for a multitude of platforms and explore which ones might be suitable for us. We will go through the pros and cons that we find from looking at some documentation, basic tutorials and community interactions with all of them.
MIT App Inventor
Summary: A versatile and easy to use platform that allows the creation of android apps via drop and drag code blocks.
Pros
- Has a user friendly interface that is accessible to beginners and persons without any prior coding experience
- Features a drag and drop system to create apps like in Scratch
- Extremely visual building system without the need for understanding syntax
- Has high-level capabilities such as text-to-speech and sensor readouts
Cons
- Difficult to build complex or ellaborate applications - is more suited for simple programs
- The drag and drop block system can be less flexible than traditional programming
- Less efficient and may run slower than programs written in other frameworks
- Android only
Electron
Summary: A popular framework developed by GitHub that allows for desktop application developemnt using web-related languages.
Pros
- Utilises web-based languages and technologies such as JavaScript, HTML, and CSS, which are familiar among many makers
- Popularity means a large pool of community resources and community contributions
- Has compatibility across MacOS, Windows and Linux
Cons
- Applications can be extremely memory intensive
- More difficult to access hardware resources like bluetooth, pins or ports
- Applications can have a large file size, even extremely simple ones
React
Summary: Another popular framework for building IOS and Android applications using Javascript and React made by Facebook.
Pros
- Can compile apps for IOS and Android from the same codebase
- Reactive native can connect and use Javascript platform capabilities
- Has the abilty to "hot reload" and "live reload" which allows for faster and smoother development
- Popular with many community resources
Cons
- Not very beginner friendly and has a stepp learning curve with many moving parts needing to be learnt
- Suffers from compatibility issues arising from third-party updates (lots of people on reddit complaining about this one)
Tkinter
Summary: An easy to use and popular standard library in Python that can be used to creat simple and lightweight desktop applications.
Pros
- Works on Windows, Linux and MacOS with consitency in code and final product across all of them
- Great for small and simple projects
- Is suprising versatile with lots of GUI elements available
- Is popular with a large community and has also been around for a long time.
Cons
- Difficult to produce visually appealing and "modern" UI
- While its great for basic and somewhat complex applications, it struggles with more complex and high end applications
- Harder to scale with larger projects
Flutter
Summary: A natively compiled toolkit by Google for developing applications for mobile, web and desktop using Dart.
Pros
- Extremely detailed official documentation and SDK
- Consistent development process and UI across platforms
- Backed by a large company like Google
- Also allows for hot reloading
Cons
- Although it is growing, it has limited libraries
- Uses Dart which is a language exlusive to Flutter
- Applications can be extremely memory intensive