В данной статье я рассмотрю три самые популярные технологии для написания приложений под android, разберу их минусы и плюсы и приведу материалы для обучения. В конце подведу краткий итог по статье, так что если вам лень вдаваться в подробности, то смела мотайте вниз.
Введение
Если вы совсем новичок в программировании, то сперва вам нужна база, конкретно в этой статье пригодятся языки Java, JavaScript (JSX) и Dart. Кроме этого лучше знать хоть что-то про алгоритмы и структуры данных, хватит прочтения книги "Грокаем Алгоритмы - Адитья Бхаргава", отличная книга для введения в тему на очень понятном языке, после прочтения почти не возникает вопросов по типу "А что я сейчас прочтиал?".
Прежде чем рассматривать обучающие материалы для остальных япов(яп- язык программирования), хочу уточнить, что Java используется в Android Studio, JavaScript в JSX и Dart в Flutter. Советую сперва разобраться в том, какую технологию вы хотите использовать, и только потом изучать яп, так будет намного проще. А теперь к обучающим материалам для япов.
Для Java есть несколько отличны обучалок:
JavaRush - сайт, который выступит идеальным обучающим материалом для людей любого уровня. Он расскажет вам всё от System.out.println("Hello world") до ООП, коллекций, многопоточности и работы с SQL предельно понятным языком. Кроме этого на сайте есть перевод гарвардского курса CS50, он также присутствует и на ютубе. На сайте так же есть отдельный раздел со статьями, на которых можно прочитать информацию по всем интересующим вас вопросам.
Книга "Java 8. Полное руководство. - Герберт Шилдт". Довольно подробная книга, но написанная на "документационном" языке, что делает её немного сложной для понимания, но не отменяет весь тот объём информации, который она даёт, а именно: основы, ООП, коллекции, библиотеки, метаданные и много других тем.
"Effective Java - Joshua Bloch Third Edition". Довольно популярная книга, хорошо объясняющая тему многопоточности, лямбд, библиотек и функционального программирования.
"Java. Concurrency in practice - Brian Goetz". Книга как и предыдущая далеко не для новичков. Она отлично разбирает тему многопоточности, безопасности этих потоков и классов, оптимизация и параллелизм в java.util.concurrent.
Для JavaScript:
"You don't know JS" - серия книг олт Кайла Симпсона. Прекрасная серия книг, которая простым и понятным языком проведёт вас по основам JavaScript, после чего расскажет о объектах, асинхронной модели, бенчмарках, ES6 и много других тем на таком же понятном языке.
"Eloquent JavaScript - Marijn Haverbeke Third Edition". Отличная книга которая подробно с примерами рассматривает такие темы как nodejs, DOM, http, обработка ошибок, асинхронное программирование и много других тем, так же в начале упомянув основы. Но как по мне, если у вас нет времени читать и Симпсона и эту книгу, лучше сперва прочитать серию книг "You don't know JS", а позже и эту книгу.
Курс от CodeCademy. Довольно хороший курс по основам JavaScript, знакомящий нас с темами от console.log() и типов данных до ES6 и объектов. Так же большим плюсом является встроенный редактор кода.
И для Dart:
"Dart. Up & Running - Kathy Walrath & Seth Ladd ". Отличная книга на понятном языке являющаяся полным руководством по Dart, но местами может быть довольно устаревшей в силу своей старости(2013 год).
Dart Documentation. Официальная документация, идеальный вариант для изучения. В ней можно найти как введение так и серьёзные темы. Вот ссылка на гайд по установке.
Dart Academy. Сборник туториалов по Dart и Flutter c разделением на категории.
Android Studio
Android Studio является официальной IDE от Google для создания приложений под Android, TV OS и Wear OS на Java и Kotlin. Также имеет возможность написания приложений на C++. Это самая базовая IDE когда заходит речь о нативной разработке.
Плюсы Android Studio:
Поддержка Java, Kotlin и С++. Кроме того, с помощью плагинов можно писать внутри Android Studio хоть на Кумире.
Возможность почти неограниченной работы с устройством, что сводит на нет проблему невозможности написания определённого функционала на Android Studio.
Широкий набор интегрированных инструментов для отладки и профилирования.
Обширное сообщество разработчиков с множеством обучающих материалов и плагинов.
Android Studio полностью интегрирован с Android SDK, что обеспечивает быстрый доступ к инструментам и библиотекам для разработки Android-приложений.
Удобный встроенный дебагер.
Встроенный графический редактор позволяет создавать пользовательские интерфейсы для приложений без необходимости писать XML-код вручную.
Android Studio поддерживает широкий выбор плагинов и расширений, что позволяет расширить функциональность IDE и упростить процесс разработки.
Android Studio легко интегрируется с популярными системами контроля версий, такими как Git, что упрощает совместную работу над проек��ами.
Встроенный эмулятор виртуального устройства.
И минусы:
Android Studio требует значительных вычислительных ресурсов, что приводит к медленной работе на слабых компьютерах и долгой сборке проекта, что вкупе с отсутствием хот релоуда отрицательно влияет на разработку.
Зависимость от Google. Они спокойно могут поменять политику приложения далеко не в лучшую сторону, как юнити в 23-ем.
Настройка Android Studio и его интеграция с другими инструментами зачастую довольно сложная и запутанная, что часто приводит к ошибкам.
Обновления на Android Studio выходят довольно часто, и зачастую они приносят за собой новые баги.
Android Studio имеет довольно большой размер установочного файла, что может быть проблемой для пользователей с медленным интернетом, также дополнения по типу android систем тоже много весят, в итоге к прошлой добавляется проблема с хранением этого объёма информации.
Из обучающих материалов можно посоветовать следующие источники:
Официальный сайт. На нём можно найти много полезных статей и курсов.
Книга "Android Studio Development Essentials" от Neil Smyth.
React Native
React Native - это популярный JavaScript фреймворк для разработки мобильных приложений. Он позволяет использовать один и тот же код для создания приложений для Android и iOS, что делает процесс разработки более эффективным. React Native основан на популярной библиотеке React, которая используется для создания веб приложений. Это хоть и немного, но облегчит обучение React Native людям знакомым с React. Создателями React Native являются Meta. В своих приложениях его используют такие компании как Microsoft, Shopify, Tesla, Amazon, Discord, Pinterest ну и конечно же Meta.
Плюсы:
Одним из главных преимуществ React Native является возможность создания приложений для iOS и Android с использованием одного и того же кода. Это значительно упрощает процесс разработки и сокращает время на создание приложения.
React Native позволяет повторно использовать компоненты, что позволяет значительно ускорить процесс разработки и улучшить общее качество кода.
React Native использует JSX, являющийся совмещением JavaScript и XML. В итоге для новичков обучение ускоряется, ввиду простоты JavaScript.
Широкая поддержка сторонних библиотек: React Native имеет широкую поддержку сторонних библиотек, что позволяет добавлять дополнительные функциональности к приложению без необходимости писать все с нуля.
React Native малотребователен к аппаратным ресурсам компьютера, что делает его идеальным решением для слабых компьютеров. Но при этом React Native остаётся довольно быстрым в сборке и отладке.
Большая база готовых решений для графического интерфейса приложения.
Большое сообщество с обилием готовых материалов.
Горячая перезагрузка, которая очень сильно ускоряет процесс отладки приложения.
Минусы:
Хоть JSX и использует JavaScript, что делает его намного понятнее, нельзя не отметить довольно сложный и запутанный синтаксис этого языка.
React Native не предоставляет полный доступ к нативным функциям устройства, что может затруднять разработку.
Нестабильная работа на разных устройствах и платформах, помимо этого из-за постоянных обновлений множество функций может быть удаленно или изменено.
Приложения, созданные с использованием React Native, менее производительными по сравнению с нативными приложениями из-за моста JavaScript и самой концепции кросс-платформенного кода. Это может быть особенно заметно при работе с большим объемом данных или сложными анимациями.
Создание сложных пользовательских интерфейсов может быть более сложным с использованием React Native по сравнению с нативными разработками из-за ограниченности фреймворка.
В отличие от нативной разработки, React Native может ограничить доступ к некоторым функциям и возможностям, доступным только на конкретной платформе. То есть то что работает на iOS в лучшем случае будет выдавать ошибку на Android.
Использование сторонних библиотек и плагинов может привести к проблемам совместимости или возникновению ошибок в процессе разработки. При этом зачастую их использование необходимо для реализации определённого функционала.
Для обучения есть следующие отличные материалы:
Книга "React Native Cookbook" от William Vance.
Flutter & Dart
Flutter - фреймворк, разработанный компанией Google, который позволяет разработчикам создавать высокопроизводительные приложения для мобильных устройств, веба и десктопа с использованием одной кодовой базы. Flutter широко используется в различных проектах, от простых приложений до крупных корпоративных решений. Используют Flutter в своих приложениях такие компании, как Google, Alibaba, BMW, Toyota и Philips.
Стоит отметить, что многие собирают Flutter проекты через Android Studio, но этот вариант разработки очень требователен к железу компьютера. Даже средний компьютер может не вывести такую связку. В разы менее затратной по аппаратным ресурсам компьютера будет сборка проекта через Visual Studio Code, так что советую собирать именно через неё.
Плюсы:
Кросс-платформенная разработка
Высокая производительность: благодаря использованию собственного движка отрисовки Skia, приложения на Flutter работают быстро и плавно даже на устройствах с ограниченными ресурсами.
Быстрая сборка и обновление приложений.
Быстрая разработка приложений: благодаря горяче�� перезагрузке (hot reload) в Flutter, разработчики могут быстро вносить изменения в код и сразу же видеть результат на устройстве, что ускоряет процесс разработки.
Однородный вид на всех платформах: благодаря использованию собственного движка отрисовки Flutter, все элементы интерфейса приложения выглядят одинаково на всех платформах, что упрощает создание кросс-платформенных приложений.
Возможности настройки интерфейса: в Flutter есть множество готовых виджетов и возможность создания собственных, что позволяет разработчикам легко настраивать внешний вид и поведение элементов интерфейса.
Минусы:
Непопулярный язык Dart.
Ограниченное количество готовых компонентов по сравнению с нативными приложениями.
Из-за встроенного движка отрисовки Flutter, размер собранного приложения может быть больше, чем у приложений, созданных на нативных платформах.
Так как Flutter абстрагирует от нативных API платформ, некоторые специфичные функции могут быть сложнее или невозможно реализовать без использования дополнительных библиотек.
Хотя в Flutter есть большое сообщество разработчиков и множество готовых пакетов, некоторые сторонние библиотеки могут быть менее стабильными или не поддерживаться в долгосрочной перспективе.
Менее оптимизирован на iOS чем на Android.
Малое количество библиотек, документаций и прочих материалов.
Итоги
В итоге однозначного ответа вывести нельзя, но можно исходить из ситуации. Кросс-платформ сейчас очень востребован в силу простоты написания кода, но на сложных анимациях и больших обрабатываемых данных может не вывозить, здесь и приходит на помощь Android Studio с высокой производительностью приложений. Если подробнее рассмотреть кросс-платформ, то React Native больше подходит для простых приложений не требующих сложных анимаций, при этом обладая большой базой готовых графических виджетов, которые увы но не всегда работают одинаково на разных платформах и вынуждают использовать снижающий производительность мост JavaScript. С другой стороны Flutter обладающий много меньшей базой готовых виджетов, даже с учётом библиотек, много производительнее и стабильнее React Native, плюс на всех платформах дизайн выглядит одинаково благодаря своему собственному движку отрисовки.
Выбирать платформу советую либо из ситуации, либо смотря какие приложения под заказ вы будете писат��. Но могу при этом посоветовать Flutter. Не смотря на его минусы это отличное решение для простых приложений, и если вы новичок, то его вам хватит с головой.
На этом всё. Надеюсь моя статья помогла вам определиться с технологией и натолкнула на правильные обучающие материалы, которые помогут быстро изучить выбранную вами технологию.
