CrossFly is an open-source (Apache 2.0) framework where you write UI and logic in plain Java and it renders on the GPU via LibGDX/OpenGL, compiling to native binaries for Desktop (Windows, macOS and Linux), Android and iOS — plus a WebGL build that runs in any modern browser — Chrome, Firefox, Safari and others. Pair it with CrossFly Sync for offline-first data.
MAUI is Microsoft's open-source (MIT) evolution of Xamarin, where you write C#/XAML and it maps to native controls via handlers, targeting Android, iOS, macOS (Mac Catalyst) and Windows (WinUI 3). It's LTS with .NET 10.
The differences that actually matter
Where the native-control model helps — and where drawing your own UI wins.
The same XAML renders differently per platform
Because MAUI maps to native controls, the same layout can look and behave differently across iOS and Android — padding, borders, WebView quirks, controls that break on one OS and not the other. This isn't a passing bug: MAUI's own community is building an Avalonia-based custom-rendering backend explicitly to deliver a consistent look across platforms.
That custom-renderer goal is CrossFly's founding architecture. CrossFly draws its own UI on the GPU, so there's exactly one implementation to get right and it behaves the same on every screen — no per-platform surprises.
Modern UI often means a paid control vendor
MAUI's built-in control set is lean; for data grids, charts, schedulers and rich editors, teams routinely license Syncfusion, Telerik or DevExpress — Microsoft itself partnered with Syncfusion to backfill controls. That's a licensing cost and a version matrix on top of your app.
CrossFly renders its own widget set uniformly, so advanced components aren't gated behind a third-party vendor contract or an extra dependency to keep in sync.
A Java shop has to re-platform
MAUI is C#/XAML on .NET. There's no direct way to call your Java or Kotlin code; Android interop goes through JNI and generated binding projects. Your existing JVM libraries, internal JARs and backend skills don't carry over without binding work.
CrossFly is Java. Your language, libraries, build tooling, hiring pool and backend stack all carry straight over — nothing to re-platform, no bindings to maintain.
Desktop is Windows-strong, Linux-absent
MAUI's Windows desktop (WinUI 3) is excellent, but macOS is Mac Catalyst only (an iPad-app layer, a subset of AppKit) and Linux desktop isn't supported at all. iOS/macOS builds also chain you to a Mac and Visual Studio — and VS 2026 removed the Mac-free Hot Restart shortcut.
CrossFly covers desktop broadly — Windows, macOS and Linux — from the same Java codebase as Android, iOS and the web (Chrome, Firefox, Safari and other browsers), which matters for enterprises whose developers and servers run Linux.
Where CrossFly pulls ahead
Where .NET MAUI is genuinely strong
CrossFly vs .NET MAUI at a glance
| Dimension | CrossFly | .NET MAUI |
|---|---|---|
| Language | Java | C# / XAML |
| Rendering | GPU via LibGDX/OpenGL (one implementation) | Native controls via handlers (per OS) |
| Cross-platform consistency | Identical by design | Varies per platform |
| Advanced UI | Built into the framework | Often a paid vendor (Syncfusion/Telerik/DevExpress) |
| Java/backend reuse | Direct (it's Java) | Via JNI bindings |
| Platforms | Desktop (Win/mac/Linux), Android, iOS, web (any browser) | Android, iOS, macOS (Catalyst), Windows |
| Linux desktop | Yes | No |
| Runs in the browser | Yes — Chrome, Firefox, Safari… | No — the web needs a separate Blazor project |
| Offline-first | CrossFly Sync (bidirectional) | Third-party libraries |
| Toolchain | Standard JVM build | Visual Studio + Mac for iOS/macOS |
| License | Open source (Apache 2.0, Core) | Open source (MIT) |