В данной статье я рассмотрю три самые популярные технологии для написания приложений под 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 систем тоже много весят, в итоге к прошлой добавляется проблема с хранением этого объёма информации.

Из обучающих материалов можно посоветовать следующие источники:

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.

  • Использование сторонних библиотек и плагинов может привести к проблемам совместимости или возникновению ошибок в процессе разработки. При этом зачастую их использование необходимо для реализации определённого функционала.

Для обучения есть следующие отличные материалы:

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. Не смотря на его минусы это отличное решение для простых приложений, и если вы новичок, то его вам хватит с головой.

На этом всё. Надеюсь моя статья помогла вам определиться с технологией и натолкнула на правильные обучающие материалы, которые помогут быстро изучить выбранную вами технологию.