Pull to refresh

Как писать приложения под Android

Reading time8 min
Views12K

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

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

Tags:
Hubs:
Total votes 10: ↑8 and ↓2+6
Comments59

Articles