As I understand it, all three of these frameworks have a JS (or C#) runtime that is compiled along with the app. This JS runtime is what drives the app and uses the native features of each platform (iOS / Android).
I've been building on Appcelerator for the last 4 months on some basic apps, and it works pretty well.
I look forward to trying out some toy apps on the other platforms.
Thanks for remembering and mentioning us. We don't have as huge a marketing budget as the other folks, so I'm going to shamelessly piggy back on your comment here.
We also do Scala, Kotlin, Clojure etc. and we are OSS as well (we started out as OSS). You can build unlimited apps without paying us a dime. You can also compile the entire compiler plus Eclipse/Idea/Maven/Gradle integration yourself so you aren't locked in.
We expose all iOS APIs and have a custom bridge besides JNI to make binding and subclassing of Objective-C APIs and C APIs as seamless as JNA or p/invoke, but without performance overhead. We use LLVM to compile JVM bytecode to native code directly, so performance is excellent and on par with Objective-C.
At this point you can write apps for iOS and Android, using the native UI APIs, and share business logic between them and your backend, if that's also JVM based. I personally think that using native UI APIs is best. However, for CRUD or enterprise apps you may not care about shininess, which is why our next focus will be on a cross-platform UI toolkit for Android and iOS.
You do have to pay for debugging support, interface builder integration and SLAs/hotfixing. We hope that's a fair way of supporting our OSS work.
In the case of React Native, we don't actually compile a JS runtime. We avoid that overhead by using whatever JS environment is available on the platform. In the case of iOS, we use JSC.
My last update (from two weeks ago or so) was that you were going to bundle a JS runtime for Android as there's too much variation in earlier versions. Has that changed?
I would love to see a comparison between some of these different frameworks. HN is abuzz about React Native, but is it really that much different than the others? In particular, do the others attempt to be declarative like React Native? Is the performance comparable?
The main advantage I see is that it's open source and free (with some patent caveats).
For those who like React (especially with the performance gains of React over the major frontend frameworks excepting Angular 2), it is also a huge positive - part of the problem with hybrid apps currently is performance problems. React assists with this greatly, as seen by the performance metrics out there.
>By my count we now have, in no particular order...
There's also Corona SDK, which uses lua and OpenGL. Write once, build for Android, iOS, and Windows Phone 8. UI performance is quite good. Supposedly building Mac and Windows desktop apps is coming soon, but HTML5 support was announced a year ago and has not yet happened.
The free version of Corona SDK supports only a subset of the native APIs (albeit an extensive subset that's probably sufficient for 95% of uses). If you want the full set, you have to pay $1,000+ a year for Corona Enterprise and implement your own os-specific glue logic.
- React Native from Facebook (https://github.com/facebook/react-native)
- Appcelerator's Titanium and Alloy Frameworks (http://appcelerator.com)
- Telerik's Native Script (http://telerik.com/nativescript)
- Xamarin (http://xamarin.com)
As I understand it, all three of these frameworks have a JS (or C#) runtime that is compiled along with the app. This JS runtime is what drives the app and uses the native features of each platform (iOS / Android).
I've been building on Appcelerator for the last 4 months on some basic apps, and it works pretty well.
I look forward to trying out some toy apps on the other platforms.