The month of May 2022 marks the release of both Flutter 3 and .NET MAUI, advancing cross-platform development forward. Flutter 3 brings stable support for macOS and Linux applications to complete their iOS, Android, web, and Windows platform capabilities. .NET MAUI brings the powerful C# language into the space, allowing development on Windows, iOS, Android and macOS.
Cross-platform software development allows for easier rapid prototyping, and our team is constantly comparing the latest tools to facilitate faster product development.
FLUTTER 3
Overview:
Flutter is a cross-platform framework developed by Google in May 2017. It is built with the Dart programming language, a C-based language also developed by Google.
How it Works:
Flutter uses the same Skia graphics rendering engine as Google Chrome. This allows the framework to write pixels directly to the screen instead of interacting with the native APIs. Because of this, the graphics rendering is independent of platform. This is how game engines render graphics. Game developers do not rewrite their code for each platform, they simply port the graphics rendering to each device. This makes Flutter more resilient to lower-level changes of native operating system APIs. The downside to this approach is felt on the web. Since Flutter is writing UIs pixel by pixel, the web implementation writes these pixels to a single canvas element. This makes some of the more standard web browser actions (right clicks, control-f searching, etc.) harder to implement.
PROS:
- Fastest growing cross-platform framework.
- Renders UI independent of the platform it is running on, making it more resilient to Native APIs changing.
- More easily portable to smart devices such as watches, TVs, and other wearable technologies.
CONS:
- The pool of available Dart developers is small, but luckily it is not a particularly difficult language to learn.
- Web support is limited to a single canvas.
.NET MAUI
Overview:
.NET MAUI is the evolution of Xamarin.Forms, a cross platform mobile application framework that targeted iOS, Android, and Windows. Visit Syncfusion for a detailed writeup on the differences between .NET MAUI and Xamarin.Forms. It is included in .NET 6 and is touted as the primary UI development kit for .NET 6 going forward.
How it Works:
MAUI works similarly to other cross-platform frameworks like Ionic/Capasitor.js or React Native. These frameworks abstract away the native controls (buttons, checkboxes, camera access, etc.) of each target device. This is accomplished by a platform specific .NET framework for Android, iOS, and macOS, and is implemented by the Mono Runtime environment.
.NET MAUI Architectural Overview
PROS:
- A large pool of C# developers is available to code cross-platform.
- Leverages the large ecosystem of .NET to encourage code reuse.
CONS:
- .NET MAUI does not support web. Developers can utilize the Blazor framework to provide a bridge to use MAUI resources.
- .NET MAUI does not support Linux.
- .NET MAUI does not bring many new innovations to the cross-platform domain.
THE FUTURE OF CROSS-PLATFORM
Flutter is currently the fastest growing cross-platform development framework available. .NET MAUI has some clear shortcomings and has a way to go to reach the maturity of Flutter. Google has clearly carved out an early lead in the latest technology race. But can they sustain this pace? According to the most used frameworks poll from Statistica, the .NET Framework and .NET Core are two of the top three most popular frameworks.
Google and Flutter are making great strides in advancing cross-platform technologies, but the slow and steady enterprise-level Microsoft has the market share to create a dominant framework as .NET MAUI matures.
Vince Giacoppo
Vince Giacoppo graduated from the University of Arizona with a BS in Systems Engineering. In his senior year he lead the team that developed The Software Factory, a system designed to boost the new software engineering degree program, jointly housed in UArizona Electrical and Computer Engineering and UArizona Systems and Industrial Engineering.