You're right that the development experience is nothing like "real" native. It's using lots of web tech so it's never going to feel like Java or Swift, however, that comes with its own advantages such as code reuse and libraries.
I'm actually really impressed with the quality of the apps you can create with it. They feel native and feel really smooth, but you need to be aware of the limitations. The major one is that the apps are essentially single threaded so you need to be aware what work you're doing to avoid UI stutters. That does make it less suited for very data heavy apps, but you can work around it if needed.
Overall, as a "real" native developer I'm pleasantly surprised.
[1] https://facebook.github.io/react-native/docs/native-modules-...
[2] https://facebook.github.io/react-native/docs/native-modules-...
- If you are web developer, easy to switch to this (duh!)
- The "React" philosophy of "diffing" and pushing changes and having a virtual DOM
- Javascript - less boiler plate and easier to write (YMMV)
But, with RN you hit the limits in some spots:
- Handling navigation. The available navigator components are difficult to work with. The idioms are little sticky. I know they've started working on a new one
- With Android SDK, you have the full set of components available and hence more choices - components, Material themes etc.,
- Because of the above point, you are always ahead, unless you have bandwidth to write wrappers for new components/ changes
- Slightly noticeable lesser frame rates compared to native. I don;t think this is a deal-breaker though.
Overall, the RN team is doing a great job by bringing the well tested RN concept to the mobile world and making "reusable code" worth an attempt. The choice depends on one's requirements and technology choices available in the project etc.,
Despite that, it's nice to read a positive feedback :)
In either case, it's not using node or v8/chromium .
Node.js adds various standard native modules - mostly various IO (file, tcp etc...), a way to load other modules, access to the underlying OS (environment variables etc...).
running v8 alone is akin to running the browser without html or the dom api, you basically can compile and run javascript functions, but can't do much with it.
The Julia websites has a benchmark for various languages performing some tasks. Javascript seemed pretty comparable to Java.
1. c/c++ is the fastest.
2. modern java is either the same as c/c++ or about 2x slower
3. modern javascript (i.e. v8) is about 4x slower then java.
4. python/ruby and most other dynamic languages are about 10x slower then java.
Never seen C# really compared with others because it's rarely ran on the same systems.
Go, Rust and all the new shiny languages are still far away from when we can infer about their performance, but they are probably somewhere around the Java level.
You seem to have cherry-picked that single-core-x86 n-body measurement just because the quad-core-x64 n-body program measurements are slower than the Java program measurements.
http://benchmarksgame.alioth.debian.org/u64q/performance.php...
Didn't mean to imply that other shiny languages are in the Java level, just bad grammar on my part I suppose.
So just a hunch, also some barely usable benchmarks that appeared on HW a few months back.
What gave you this impression? MIR landing?
I'm not saying it is a wrong impression, but it doesn't match mine. My impression is that Rust is routinely very fast, often rivals C, and most of the recent headways were surrounding the performance of the compiler, not the resulting programs.
Can you use service workers with react native?
.. or Lua, or Bash, or Qt, or Love, or Unity, or Tcl/Tk, or C/C++, or .. anything else that this is now sitting alongside, 'in the stack of usable components'.
Its good for web developers. But in the 'native application' realm, there are .. frankly .. a lot of better ways to do user interfaces than the franken-nightmare that supports the gloss...
I'd consider Swift to be native, but Java generally not. You can compile Java to machine code, but typically people run bytecode on a VM.
But then, platform domination is always a thing, and right now its Reacts/Facebooks' thing, so onward it rolls. For my part, I'm looking forward to React wiping out every other single, similar, framework in the repo's. (I'm not.)