3 ms·
None of those! The real answer is Nativescript -- https://nativescript.org https://nativescript.org It doesn't get the buzz, and the ecosystem is somewhat old
by hardwaresofton 5y ago
None of those! The real answer is Nativescript -- https://nativescript.org https://nativescript.org
It doesn't get the buzz, and the ecosystem is somewhat old (it's surprisingly common to run into a repo that hasn't been touched in a year) but it's the superior platform to React Native and you get none of the capriciousness of the React ecosystem (if anything the Nativescript community might need a jolt). Nativescript is incredibly productive and you can bring along frameworks that do their best to move the work to compile time (like Svelte).
I think the best options form a spectrum like this:
(PWA)-------(NativeScript/React Native)------(Flutter)------(Kotlin/Alternative iOS environments)--------(Objective-C/Swifth/Java "fully native")
If you choose essentially anything on the right side of flutter, performance will be relatively good out of the gate, and anything to the left (including flutter) and you have to be a little careful.
I think Flutter is actually the worst of both worlds because I'm heavily biased against Dart after using it, but it is obviously backed by a behemoth, and the render-every-pixel model makes it insanely portable. If you want to write-once-run-everywhere (generally a bad idea, but if it works for you who cares), then flutter is the best by a longshot.
- vmception 5y agoNativeScript is obviously the wrong answer I want to pass interviews and do android development for employers Thanks for the spectrum, which one would I lead with and expect to answer the most questions in and complete project time trials on
- hardwaresofton 5y ago> I want to pass interviews and do android development for employers Definitely learn plain old Android-style Java, with the usual tools (android studio, etc) then. Most shops are going to be that, and if you want to pick up Kotlin for the shops that are a step ahead then do that. > Thanks for the spectrum, which one would I lead with and expect to answer the most questions in and complete project time trials on React Native in this scenario, unless the company already has at least one (and if it's one they have to be VERY competent) mobile engineers on both major platforms. Fully native is the best results (there's essentially zero limitation) but is the most specialized work. PWA is the easiest, but paradoxically needs a tiny bit of specialization to get native enough that the business isn't embarrassed. Also, with PWA there's lots of hard limits on what the app can do (notifications are a particular bugbear).
- whoisjuan 5y agoI believe what you say about NativeScript but there’s not enough momentum in that solution. Learning NativeScript will give you access to a way smaller pool of projects or companies you can work for. I think most developers would prioritize employability + traction/community/documention. There’s not even a comparison there. React Native is the superior solution.
- hardwaresofton 5y agoYeah -- I do agree with you, React Native is going to see the majority of the love. I would like to point out that NativeScript works -- people mostly don't make buzz about it but it's out there powering apps that are delivering value, I've used it myself for a client and it was fantastic. React Native is the superior solution only if you prioritize employability/traction/community (I disagree on documentation, NativeScript's documentation is excellent), but if you need to get an application out but are turned off by the React crazy-land and bad performance of React in a mobile context, give NativeScript a try, it's the better platform in a technical sense -- it has things React Native doesn't.
- mekkkkkk 5y agoWhat made you dislike Dart? I find it a highly inoffensive language.
- hardwaresofton 5y agoIn no particular order: - The type system was essentially like java but perhaps even worse -- in a world with Rust, Haskell, Julia, Kotlin, Scala, and even Golang this seemed egregious. - No algebraic data types (sum/union), - class-based inheritance - nullable values - using exceptions instead of errors-as-values approach. I know they worked hard on the language (rewrites are hard, there are some good talks on there about it, link @ end), but it's like they ignored all the progress in PL over the last like decade+. Anyway, continuing on: - JSON serialization/deserialization[1] was like the worst parts of Go and the worst parts of Java (again this has to - SQLite driver[0] couldn't be used off device. I found this out while trying to write tests that ran off-device. Now there's sqlite3[1] so maybe it's no longer an issue - Dart2 was a played down rewrite of Dart1, with JS interop removed. Typescript is a better language than Dart. - BloC is overcomplicated and was rolled out poorly at the time (this has more to do with Flutter than Dart). The state management patterns felt like unbaked react (flux pattern) v1. All this said, Dart will probably be around for a very long time. Fuschia makes a LOT of sense for Google to continue pursuing, which uses Flutter. Dart could be worse, and I think it's good enough for a bunch of usecases. If it were me, I wouldn't even choose it over Nativescript. The Boring Flutter Development Show[3] was/is fantastic, I watched it religiously when I was learning and trying out Flutter -- having a big backer like google means there are always going to be dedicated resources and smart people behind Flutter which honestly probably matters more in the long run than Dart being a shit language. As Golang has shown us, you can just iterate to having a good language. Feels like Dart2 has it's base to build from now, and I don't like the places it's started, but it will probably continue to succeed. At the very least you won't see bad PR about it, because most people who are willing to tweet about it are invested in it's success or want jobs at Google someday, and there is dedicated money for "dev rel". Seeing Sony embrace flutter for embedded things is pretty big as well[4]. Sony has a surprisingly strong track record of making technologically competent products: - PS Vita (generally regarded as ahead of it's time) - Sony SmartWatch 1 & 2 (I owned both, they were ahead of their time, and were very good quality, easily hackable) - Sony XPeria phones & tablets (embraced open source and easy bootloader unlock, I own a tablet that I'm extremely happy with) [EDIT] - Separate some points about the language, also add a link to the strange loop talk on the rewrite[5] [0]: https://pub.dev/packages/sqflite https://pub.dev/packages/sqflite [1]: https://pub.dev/packages/json_serializable https://pub.dev/packages/json_serializable [2]: https://pub.dev/packages/sqlite3 https://pub.dev/packages/sqlite3 [3]: https://www.youtube.com/watch?v=qXAUNLWdTcw&list=PLjxrf2q8roU3ahJVrSgAnPjzkpGmL9Czl https://www.youtube.com/watch?v=qXAUNLWdTcw&list=PLjxrf2q8ro... [4]: https://github.com/sony/flutter-embedded-linux https://github.com/sony/flutter-embedded-linux [5]: https://www.youtube.com/watch?v=WjdrUphF5l4 https://www.youtube.com/watch?v=WjdrUphF5l4