Strong words Shai, I don't know if you think anything has changed during 
2018 regarding Flutter.

I've been evaluating it recently and there are a lot of things I like about 
it and while its certainly beta (with a humble version 0.35) it already has 
produced apps that have been featured on the app stores and look and run 
beautifully.

The main issues I have with CN1 are the slow cycle involved in order to get 
changes onto the device and the lack of insight into what's going on once 
it is on the device. With Flutter both of those have been addressed but 
your points are valid. Here are my thoughts in order with notes:

- Smaller more native applications and probably faster - this is especially 
> true on Android where we use the native Java support

CN1 apps are smaller, almost certainly not faster in terms of rendering and 
that these days separates good apps from great apps, totally responsive UI, 
fast smooth animations. I'd be interested to see benchmarks in terms of CPU 
heavy work. Flutter runs on a C++ engine under the hood and compiles to 
native ARM

- Full integration with native OS including native widgets

CN1 has this but using it is complex, to get the full benefit from CN1's 
WORA you DON'T use native widgets if at all possible. I believe this has 
improved particularly around the maps but I got burnt in the early days of 
PeerComponent and have been weary of getting back to it since. I'm not sure 
what benefit Native widgets provide and Flutter has a complete Material 
design theme and an iOS one both of which produce a more modern default 
look than CN1 without native widgets. In terms of integration with the 
native OS for other functionality the approach between CN1 and Flutter to 
get into the native code is broadly similar in concept.

- More platforms - Desktop, Windows, JavaScript
>

Fair enough. I don't want or need to support other platforms, and can't 
justify the subscription level required for JavaScript support anyway. If 
these platforms are required CN1 provides them and Flutter does not.

 - No need for a Mac, we work on Linux/Windows

Except for Application Loader you need a Mac anyway and if you already need 
one then using one and getting hot reload onto iOS devices instead of 
minutes long builds to iterate you may as well use it. The build times for 
iOS is one of the pain points for using CN1 and the fact that despite the 
goal of WORA you simply can't make any non-trivial app without finding 
quirks between platforms and to get to the bottom of them fast iteration, 
on-device debugging and profiling are key.

- Kotlin & Java tooling is years ahead of Dart
>
Yes, and Dart is an obscure language with Flutter really its only main use 
outside of Google. 

- Better overall tooling - GUI builder, CSS/Theming tools
>
This is one of the things that concerns me about Flutter (along with Dart). 
I haven't yet seen how complex it will be to modify the design of a 
functioning Flutter app. In CN1 it is possible to keep the layout and 
theming separate from the logic to a good extent which doesn't seem to be 
the Flutter way.

 - More documentation and online tutorials - real world applications

Flutter is catching up.


>  
I've only recently started looking into Flutter and as it immediately 
addresses the pain points I have with CN1 its something I'm going to 
continue to look in to. I highly doubt that they are 7-8 years behind CN1. 
I think Flutter will be giving React Native a run for its money by the end 
of this year, for an 11 month old project it has a lot going for it and its 
current shortcomings are understandable based on how young it is AND that 
it uses an obscure / new language. My main concerns with Flutter are:

1. Dart. Kotlin seems better than Dart on first impressions and of course 
the Java ecosystem has years worth of existing solutions that Dart just 
doesn't have.
2. The GUI building and themeing being incorporated in amongst the logic in 
deeply nested and bracketed widget definitions. Seems like refactoring and 
reskinning will be much more complicated.
3. The native bridge being at least as complicated if not more so as CN1's. 
Compare to Multi-OS Engine (which has a much longer list of concerns!) 
where iOS libraries and frameworks are automatically wrapped and then fully 
available in Java with very little development work. 

Things I like are:
1. Lightning fast performance and also development due to hot reload
2. Simple to debug, test, run and profile on the device - you can trigger 
performance overlays on the device from the IDE, update UI code and see the 
changes in under a second, observe the DartVM from your dev machine. All of 
these things are only possible in CN1 on the simulator
3. Building for free on the machines I already own - also means I can 
choose what version to build against for the life of the project.

As always its a case of picking the right tools for the right job and 
keeping a broad view on what's available, but I think Flutter is one to 
watch this year.

On Saturday, December 9, 2017 at 9:18:03 PM UTC+13, Shai Almog wrote:
>
> Hi,
> flutter isn't a product from google. It's a test balloon from the Dart 
> team. The fact that Googles Android team makes fun of WORA tools and have 
> picked Kotlin over Dart is pretty much an indication of how this isn't a 
> "product from Google". In a large org like Google a Director can just 
> launch nonsense like this with no approval from management or any real 
> direction. Since it's alpha it can be abandoned like GWT, Google Code, 
> Chrome App Store etc.
>
> We support live code updates in our simulator and have supported that 
> since launch. We'll support it on the devices when we release the 
> on-device-debugging support which I would hope to do in 2018.
>
> Flutter is roughly 7-8 years behind us and amusingly enough it's 
> architecture is significantly inferior on Android as it needs to traverse 
> the slow JNI bridge when communicating with "native Java". Here are just a 
> few things we do better:
>
> - Smaller more native applications and probably faster - this is 
> especially true on Android where we use the native Java support
> - Full integration with native OS including native widgets
> - More platforms - Desktop, Windows, JavaScript
> - No need for a Mac, we work on Linux/Windows
> - Kotlin & Java tooling is years ahead of Dart
> - Better overall tooling - GUI builder, CSS/Theming tools
> - More documentation and online tutorials - real world applications
>
> If flutter wasn't mistakenly perceived as a product from Google people 
> wouldn't give it the time of day.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"CodenameOne Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
Visit this group at https://groups.google.com/group/codenameone-discussions.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/codenameone-discussions/0f541c1d-549e-4f21-828e-ff857ce3f7c4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to