RxJava в Android — все таки «мода» или «острая необходимость»?

Все больше работадателей требуют знания RxJava. Все больше проектов нужно поддерживать уже реализованных в RX.
1. Почему никто толком не может объяснить, зачем rx в Android-е?
2. Неужели Android SDK так убог, что нет альтернатив?
3. Как раньше справлялись без RX в Android?
4. Какая асинхронность??? - если её в принципе в Activity и Fragments не должно быть? (есть Services для этого)
5. Почему уже 3-4-ый год всплеска RX в Android - но (так сказать "официальные отцы") Google - молчат как рыба об лед?
6. Почему эталонный Google IO App - не переписан еще под RX?
7. Rx - изобрели для высоконагруженных серверов, парадигма уже залезла в mobile,
но Java -серверные разработчики - до сих пор активно её не используют (таких еще не встречал).... где логика?
8. Как я понимаю - классические проблемы Android разработки, Rx так и не решил
(Runtime Change Configuration - ??? Interprocess - ??? Возобновление - работы (onRestoreStateInstance) после "прибития" Activity???, утечки памяти в inner-классах и слушателях - ???)
9. AOSP - написан императивно, писать поверх - функционально - невольно принуждает к пляскам, бубнам и велосипедам - в итоге все равно проект очень далек - от "чисто функционального" - не так ли?
10. Как Самая Реактивная, Функциональная, Масштабируемая парадигма от
Virgil Dobjansky(Google IO 2010, 3 Android App Patterns) - оказалась "негодной"?
11. почему iOS братья - остаются более консервативными - и до сих пор обходятся?

Ходят какие-то люди, всем говорят - что надо, но никто не говорит - зачем, вручают какие-то умные книжки - весьма далекие от реальной жизни, ссылаются на своих rx-"гуру".
Люди Объясните пожалуйста )) как быть? во что верить? с учетом современных реалий, простому смертному Android-Разработчику? Зачем мне это?

Спасибо
  • Вопрос задан
  • 5308 просмотров
Решения вопроса 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
ГЛАВНЫЙ КОЗЫРЬ RxJava: УДОБСТВО КОДИРОВАНИЯ и ЭКОНОМИЯ ВРЕМЕНИ НА РАЗРАБОТКУ и как следствие чуть ли ни мгновенный выпуск продукта в паблик.
МИНУС: доп. время на исполнение, т.к. это "прослойка".

А теперь, про остальное:
Если кратко: почему для простых операций ГРАМОТНЫЕ КОДЕРЫ не подключают jquery, а пишут на нативном javascript'e? Чтобы обеспечить приложению более высокую производительность.

RxJava - это как бы тот же jquery (или фреймворк), т.е. еще одна "прослойка" уменьшающая время разработки и упрощающая процесс написания кода для кодеров, НО!!! в разы увеличивающая время исполнения и требования к "железу".

RxJava в Android — все таки «мода» или «острая необходимость»?
это фреймворк-"времянка", PR-я который можно на какое-то время удержать мобильный рынок разработчиков (выиграть время для выпуска замены) на данной платформе.

Действительно, Google понимает, что отношение показателя рынка разработчиков к производительности готовых приложений у него: 80/20, в то время как у других: 20/80 (Nokia та же) и что скоро Google скорее всего поменяет язык разработки на свой (и всю парадигму в целом), в ином случае - они будут не конкурентно способны. Но пока они это делают - они будут молчать. Скорее всего они перейдут на javascript с нативным "движком" на ядре ОС.

Линки:
1. В 4-х частях перевод о RxJava для разработки под A...
2. Что ожидать от использования javascript в 2016 год...
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Это удобно. Причин множество, читайте в интернетах.
Справлялись, например, лоадерами, асинктасками, и прочими велосипедами.
Асинхронно сходить в базу, например.
Гугл не молчит: https://github.com/google/agera
Во многих смартфонах уже 4-8 ядер, а юзать их без Rx довольно неудобно.
Rx не призван решать описанные вами проблемы.
Поверх есть всяческие RxBindings, используя их, можно легко уходить от императивного к реактивному.
В iOS, в общем, есть RxSwift. Но вообще-то сравнивать платформы так некорректно.
Ответ написан
thelongrunsmoke
@thelongrunsmoke
Программист
Во-первых, элементы реактивного программирования в андроиде были и есть. Вспомните о DataSetObserver.
Если вы современный разработчик, то используя RecyclerView, создаёте для него адаптер содержащий имплементацию этого интерфейса, а значит поток данных управляет выполнение программы - это элементы Rx.
Во-вторых, когда вы обрабатываете данные, хочется оперативно знать об их изменении, здесь реакт на своём месте. Но, часто из Rx пытаются создать двухстороннюю связь модель-представление, а это нарушает принципы MVC.
Об асинхронности. Java изначально многонитевый язык. Вы можете создавать нити сколько угодно и где угодно. И не забывайте Service - не асинхронен!
Ответ написан
Rou1997
@Rou1997
"1. Почему никто толком не может объяснить, зачем rx в Android-е?"
Потому что им сказали - надо использовать, они используют, им не объясняли, и они не дошли до этого сами, поэтому не понимают, и вам объяснить не могут.
Видимо, это одна из проблем "умных книжек", их авторы доносят до читателя мысль, но не заботятся об ее объяснении, вот и получаются "зомби", бездумно скандирующие лозунги.
А вы - дойдите. Сравните с ним и без него, подумайте, для каких задач он хорошо подходит.
Используйте это в своей работе, и другим потом объясняйте.

"2. Неужели Android SDK так убог, что нет альтернатив?"
Очень убог, был бы у вас шире кругозор, вы бы просто поражались с него.

"Какая асинхронность??? - если её в принципе в Activity и Fragments не должно быть?"
Как это не должно быть? Скорее - наоборот, любой качественный UI должен быть асинхронным, то есть все тяжелые операции - в потоке, отдельном от UI.

"классические проблемы Android разработки"
По мне, основная проблема разработки под Android - это то, что пишешь много, а делаешь мало (как девиз jQuery, только наоборот). Библиотеки очень многословны, IDE - не заточены под Rapid Application Development.
Может быть, Rx частично решает эту проблему в некоторых случаях?
Ответ написан
@Dmtm
Android
все верно, rxjava не решает основных проблем с жизненным циклом, бесполезная вещь,
пока не знаю ничего лучше очереди задач (BlockingQueue), пула потоков (Thread) и EventBus

"Какая асинхронность??? - если её в принципе в Activity и Fragments не должно быть?"
Как это не должно быть? Скорее - наоборот, любой качественный UI должен быть асинхронным, то есть все тяжелые операции - в потоке, отдельном от UI.

вот поэтому UI (слой View) не асинхронный, асинхронные операции вне Activity и Fragments
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы