React Native или не Native?
Часто встречаю дискуссии в которых вижу не понимание того как устроен React Native. Многие считают эту технологию подобием Cordova, PhoneGap работающим, через браузер(WebView). Поэтому предлагаю разобраться с этим на конкретном случае.
Например у нас есть библиотека ViroReact
ViroReact — это платформа для разработчиков, позволяющая быстро создавать собственные кроссплатформенные AR / VR-приложения с использованием React Native. ViroReact поддерживает:
- AR: ARKit и ARCore
- VR: картон (iOS и Android), Daydream и Gear VR
Платформа состоит из двух основных компонентов:
- Высокопроизводительный движок 3D-рендеринга cделан на С++
- Пользовательское расширение React для разработки AR и VR.
Убедится в том, что он сделан на плюсах можете здесь
Эта библиотека есть, в том числе под Java, Objective-C и под React-Native. С ОДНИМ ОБЩИМ ЯДРОМ на С++
Объясняю на пальцах. Нативный слой для нас как двигатель у автомобиля. Его можно заводить нативно, через кривой стартер, а можно стартером через ключ зажигания на брелоки.
Нативный слой и слой React, соединены мостом.
Так вот дело в том, что через мост передаются только сообщения для управления нативным слоем, в нашем конкретном случае библиотекой ViroReact, еще раз повторю, что двигатель у которой общий как для Java, Objective-C и React-Native!
Гетеры и сеттеры, что отправляются в нативный слой и приходят от туда — это микро сообщения, а не видео 4K. Это более чем достаточно, чтобы глаз человека не отличал перформанс React Native приложения от сделанного на Java или Objective-C.
Иначе бы React Native не стал бы так популярен, а популярен он как раз потому, что разработчики им довольны и я, в том числе получаю удовлетворение от работы с ним в течении 3-х лет.