Языки программирования для мобильной разработки
8 языков программирования для Android-разработчика
8 языков программирования для Android-разработчика
Android-разработчики пишут не только на Java и Kotlin: в этой статье разберём 8 популярных языков программирования, которые подходят для разработки Андроид-приложений, расскажем, насколько востребована профессия и где её освоить.
Это официальный язык для разработки под Android, который поддерживается Android Studio и является основой для изучения Kotlin.
Вообще, когда начинаются споры о том, что лучше, Java или Kotlin, следует помнить, что Kotlin — это обёртка над Java. Чтобы понять документацию Kotlin и получить помощь в процессе разработки мобильных Android приложений, следует знать именно Java.
Kotlin
Ещё один официальный и не менее популярный язык. Также поддерживается Android Studio, характеризуется синтаксическим сахаром и предоставляет корутины, что упрощает асинхронную работу.
Синтаксис Java заочно предполагает более громоздкий код, чем в случае с Kotlin. Например, так Android-разработчик будет присваивать текст полю на этих двух языках программирования:
Java
Kotlin
helloTextView.text = «Hello world»
Как видим, Kotlin позволяет написать то же самое, но гораздо быстрее, с использованием меньшего количества строк.
Главные преимущества Kotlin в разработке под Android:
Примечание Следующие языки рекомендуем рассматривать как альтернативные варианты, а не базу для Android разработки.
Python
Да, энтузиастам удалось приспособить один из самых популярных языков программирования под Андроид разработку. Реализовано это с помощью Kivy и BeeWare:
Будем откровенны, Android-разработчик, который пишет мобильные приложения на языке программирования Python, — большая редкость. В основном это что-то для себя или проекты молодых амбициозных фирм.
Если вы знаете Python, попробовать определённо стоит.
C-языки позиционируются как высокопроизводительные, и это важно, особенно если мы говорим о чём-то тяжеловесном вроде мобильной 3D-игры.
Но стоит сразу оговориться, что прибегнуть к Java всё-таки придётся: без этого языка вам не создать полноценное мобильное приложение. Android NDK позволит написать на C/C++ только часть приложения, например библиотеку, которую через Java можно подключить к программе.
JavaScript
А вот Android-разработка на JS более жизнеспособна.
С фреймворком React Native вы можете создавать мобильные приложения с многофункциональным мобильным UI. При этом такие программы полностью нативны, то есть не являются мобильными веб-приложениями. Всё потому, что React Native использует те же компоненты, что и простые приложения для Android.
Flutter — относительно новая технология от Google, полноценный SDK, выпущенный в 2018 году.
По ряду параметров считается более удачным решением, чем React Native. Позволяет писать кроссплатформенные приложения, поэтому эффективен в разработке приложений для Android с общей базой кода на языке Dart.
Dart позиционируется как альтернатива JavaScript. Он компилируется в бинарный код, за счёт чего достигается высокая скорость выполнения операций. Вместо XML Dart использует так называемые деревья макетов.
Основные преимущества Dart:
Программирование на Андроид с использованием C# подразумевает платформу Xamarin. С её помощью можно создавать одну логику приложения на C# для Android и iOS.
Схематическое представление работы Xamarin:
Как видно, пользовательский интерфейс разрабатывается индивидуально для обеих платформ, при этом бизнес-логика остаётся общей.
Но, как и в случае с языком программирования Python, Андроид разработчик, пишущий на C#, — это, скорее, исключение, чем правило. Такое решение подойдёт тем, кто знает язык и хочет попробовать себя в мобильной разработке.
Стоит ли становиться Android-разработчиком?
По данным IDC за конец 2020 года, доля ОС Android на рынке смартфонов составила 85%:
По всему миру насчитывается почти 3 миллиарда устройств на этой системе. Можно смело заявить, что Android-разработчик — профессия востребованная.
По данным hh.ru, в России насчитывается порядка 7000 соответствующих вакансий, а в США — 12 000, согласно LinkedIn.
Кроме того, мобильная разработка позволяет также зарабатывать на собственных приложениях. Для наглядности: выручка маркета Google Play в 2020 году составила около 38,6 млрд долларов.
Выводы
Несмотря на весь спектр языков, обучение Android-программированию должно начинаться с Java и Kotlin, как двух официальных языков.
Начинающим Android-разработчикам и просто новичкам в программировании отлично подойдут онлайн-курсы Android, в ходе которых можно и теорию освоить, и поучаствовать в реальных проектах.
Основные языки программирования для разработки мобильных приложений
Язык программирования — это набор формальных правил, по которым пишется код для приложений. Сейчас языков мобильной разработки много, а выбор конкретного метода зависит от ваших целей и возможностей, операционной системы, типа приложения и требований к нему.
✅ Знать языки для создания мобильных приложений полезно не только разработчикам, но и заказчикам, которые хотят лучше разобраться в процессах проекта и знать, какой язык выбрать для своего приложения. В статье рассказываем об основных языках программирования для мобильной разработки iOS и Android
Kotlin
Kotlin — язык программирования для создания приложений под Android, рекомендуемый Google. Он был создан для преодоления недочетов Java и используется для написания кода почти всех новых приложений на Android. Kotlin за несколько лет завоевал доверие программистов и стал отраслевым стандартом в Android-разработке.
Преимущества:
Недостатки:
До 2018 года был основным языком для создания приложений под Android, но и в 2021 его продолжают использовать многие разработчики.
Программирование на Java используется для разработки кроссплатформенных и гибридных интерфейсов, но в последних двух случаях задействуются и другие языки для того, чтобы учесть специфику каждой ОС.
Преимущества:
Недостатки:
Objective С
Objective С начали использовать в 80-х годах 20 века. Он был создан на основе C и Smalltalk, а в 2008 году Apple выпустил iPhone SDK 2.0, позволяющий создавать программы для iOS. Сначала его считали надстройкой к С, но когда его лицензировали NextStep и Apple, Objective С стал официальным языком всех интерфейсов под iOS.
В 2014 году вышел более мощный Swift, который взял себе все лучшее от Objective-C, но был лишен его недочетов. Сейчас большинство программистов выбирают Swift, но Objective С тоже сохраняет позиции как классический способ написания кода на iOS.
Преимущества:
Недостатки:
Swift
Swift — язык программирования от Apple, на котором можно создавать приложения для iOS, Apple watch и Apple TV. Swift не только перенял все плюсы Objective С, но и был наделен новыми функциями, которые упрощают написание и реализацию кода:
Преимущества:
Недостатки:
Rust начал создаваться в 2006 году разработчиком Грейдоном Хором, который хотел соединить в нем скорость C++ и надежность Haskell. В 2009-ом к нему присоединилась Mozilla, и год спустя его презентовали на Mozilla Summit. Сейчас Rust является одним из самых популярных среди разработчиков кроссплатформенных приложений.
Преимущества:
Недостатки:
С# — объектно-ориентированный язык, который был создан компанией Windows и использовался в основном для Windows Mobile, но в последнее время C# научился работать на Mac, Linux, IoS и Android. За счет удобного синтаксиса, строгого структурирования и большого количества библиотек и инструментов на нем можно писать разные виды интерфейсов и решать любые задачи с меньшими затратами времени и ресурсов.
Плюсы:
Минусы:
Выбор языка программирования зависит от OC, задач приложения и способа разработки, который вы выберете.
В студии AppCraft мы разрабатываем нативные приложения для iOS и Android. За 10 лет собрали в портфолио более 200 проектов: корпоративные решения, соцсети, банковские системы, мессенджеры и e-commerce и не планируем останавливаться 🙂
В любом проекте мы стремимся создать работающий продукт, который решит задачи клиентов и увеличит прибыль. Если вы хотите разработать быстрое и функциональное мобильное приложение — оставьте заявку и мы с вами свяжемся, чтобы обсудить детали.
Что такое фирменный стиль бренда и почему он важен?
В этой статье разберемся из чего складывается уникальный фирменный стиль бренда, какие функции выполняет и почему важен для бизнеса.
Свяжитесь с нами
Хотите получить бесплатную консультацию о разработке мобильного приложения?
Мы сможем сразу дать ориентировочную оценку проекта по стоимости и срокам, если Вы кратко опишите его основную идею и функции.
Заполните заявку или позвоните нам
Тоже интересно
Создание приложений для интернет-магазина
Как создать удобную навигацию в мобильных приложениях
Как улучшить интерфейс с помощью иконок
Основные языки программирования для разработки мобильных приложений
Контакты
Компания
Новости
Соцсети
Copyright © 2011-2020, AppCraft LLC
Мы используем куки, чтобы
сделать мир прекраснее
Спасибо!
Мы скоро с вами свяжемся и подробно проконсультируем по интересующим вас вопросам.
А пока можете узнать подробнее о том, как формируется стоимость, сколько времени занимает реализация проекта и о других нюансах разработки в наших статьях.
Языки для мобильной разработки
Если вы хотите написать мобильное приложение, вам нужно знать язык программирования. Но может оказаться трудным выбрать лучший язык (или языки) для проекта. Есть много вариантов, и в этом посте я помогу вам сузить их, чтобы вы могли выбрать лучший.
Все зависит от того, что вы собираетесь написать. Для некоторых приложений разработчикам мобильных устройств могут не понадобиться все доступные функции определенного языка. В других ситуациях для одного приложения может потребоваться более одного языка. В этом уроке я расскажу о различных мобильных языках разработки и выделю некоторые детали, которые помогут вам принять решение.
Начнем с некоторых языков, с которыми вы, возможно, уже знакомы.
Языки Android
Согласно индексу TIOBE, Java является самым популярным языком программирования по состоянию на июнь 2017 года. Если вы хотите разрабатывать приложения для Android, скорее всего, вы будете придерживаться Java. У него есть большое и развитое сообщество разработчиков, и это означает, что вы сможете легко получить техническую поддержку и помощь.
Итак, когда вы разрабатываете программу для мобильных устройств с помощью Java, вы можете придумать любое приложение, о котором вы можете подумать. Единственными ограничениями будут ваше воображение и уровень ваших знаний Java.
Kotlin
Kotlin был спроектирован и разработан компанией JetBrains, чешской компанией, известной своей популярной IDE, IntelliJ IDEA. Недавно команда Android от Google объявила, что официально добавляет поддержку языка программирования Kotlin.
Kotlin был разработан для решения некоторых проблем на Java. По словам фанатов языка, синтаксис Kotlin проще, чище и приводит к меньшему раздуванию кода. Это поможет вам больше сосредоточиться на решении актуальной проблемы, а не на сложном синтаксисе. Кроме того, вы можете использовать Kotlin и Java вместе в одном проекте, и это делает его действительно мощным.
Языки iOS
Swift
Если вы хотите разработать для iOS, Swift может стать для вас подходящим языком. Внедренный в 2014 году и объявленный открытым исходным кодом в 2015 году, Swift быстро покоряет мобильных разработчиков. Он очень популярен, особенно среди новых начинающих разработчиков iOS.
Apple добавила некоторые замечательные функции для языка, такие как упрощенный синтаксис, возможность легко определять ошибки программиста и т.д. Огромные усилия Apple по продвижению Swift явно указывают на то, что она хочет, чтобы этот новый язык стал основным языком программирования для экосистемы приложений.
Objective-C
Objective-C был оригинальным языком разработки для iOS. Хотя недавно введенный язык Swift является будущим развития iOS, многие продвинутые проекты все еще полагаются на Objective-C. Таким образом, переход от Objective-C к Swift ожидается несколько медленным, и вам может понадобиться оба из них для некоторых проектов, по крайней мере, пока.
Межплатформенные языки
JavaScript
JavaScript имеет давнюю историю, восходящую к началу Всемирной паутины. Очень популярный для фронтенда и бекенда язык, который позволяет веб-разработчикам делать все, начиная с улучшения пользовательского интерфейса своих веб-сайтов и заканчивая созданием полноценных веб-приложений.
Сегодня существует несколько инфраструктур JavaScript, специально предназначенных для мобильных платформ разработки, таких как Ionic 2 и React Native. С помощью этих фреймворков и библиотек очень легко разрабатывать кросс-платформенные мобильные приложения. Это означает, что вам нужно написать только одну версию приложения, и она будет работать на iOS или Android.
TypeScript
Другие языки
C#
C является вторым по популярности языком в индексе TIOBE, и, как и Java, его сообщество полно опытных разработчиков, которые могут предложить вам ценные советы о том, как писать код без ошибок.
Python
Как классифицировать языки?
Мобильные приложения могут быть сгруппированы в три категории: нативные, гибридные и кросс-платформенные. Нативные приложения могут полностью использовать все возможности и функции ОС, и они являются самыми быстрыми, когда дело доходит до производительности. Однако вам необходимо поддерживать разные кодовые базы для разных мобильных платформ, поскольку каждая платформа использует разные языки программирования.
Например, платформа Android использует Java плюс C/C++ для разработки собственных приложений. Платформа iOS от Apple полагается на Objective-C и Swift как на родные языки. C# используется платформой Windows Mobile для кодирования собственных приложений. Все эти родные языки программирования приложений скомпилированы, а не интерпретируются.
Гибридные мобильные приложения на самом деле являются веб-сайтами, которые также предназначены для работы с мобильными устройствами. Пользователь может получить к ним доступ через мобильный браузер, как если бы они посещали веб-сайт на настольном компьютере. Комбинация HTML5, CSS и JavaScript является очевидным выбором, если вы хотите разрабатывать веб-приложения.
React Native и NativeScript являются популярными нативными межплатформенными платформами. Если вы хотите узнать больше об этом, ознакомьтесь с нашим полным курсом для новичка или несколькими нашими учебниками.
Сравнение возможностей
Прежде чем углубиться в детализированные языковые функции, вы должны выбрать платформу. Вы можете обратиться к статье «Платформы мобильной разработки», чтобы получить представление о различных платформах и о том, как выбрать ту, которая вам подходит. Предполагая, что вы уже выбрали мобильную платформу разработки, давайте посмотрим, как эти языки сравниваются с точки зрения их возможностей.
Нативный Android
Null безопасность
Kotlin лучше контролирует ссылки Null, так что известные ошибки NullPointerException (распространенные на Java) намного проще устранить. Это сокращает время разработки и повышает производительность программистов.
Согласованность
Хотя Java поддерживает одновременные операции, соответствующий код может сильно пострадать от проблем с читабельностью и поддержкой. Котлин решает эти проблемы с помощью Coroutines. Полученный код легко читается и максимально понятен.
Система типов
Система типов Java несовместима, и это иногда может привести к путанице. В частности, примитивные типы, такие как integer, boolean и т.д., должны обрабатываться как особые случаи. Напротив, у Kotlin есть относительно простая и универсальная система типов, которая минимизирует ошибки программиста.
Поддерживаемые стили программирования
Хотя Java теоретически может поддерживать различные стили программирования, некоторые разработчики считают, что он чрезмерно продвигает ООП (объектно-ориентированное программирование). Kotlin, похоже, не применяет какой-либо особый стиль программирования, поэтому разработчики имеют больше свободы выбора подходящего подхода. Однако разработчикам Kotlin необходимо иметь полное знание архитектуры программного обеспечения и принципов разработки.
Какой из них выбрать?
Во всяком случае, Google ясно объявил, что они будут предлагать полную поддержку Kotlin. Фактически, Android Studio, официальная Android IDE, теперь полностью поддерживает Kotlin. Новые возможности и улучшения постоянно добавляются в Котлин. В течение следующих нескольких лет мы переживаем переходный период от Java к Kotlin, по крайней мере, в разработке на базе Android.
Нативная iOS
Синтаксис
У Swift есть более простой и понятный синтаксис, который помогает программистам достичь своих целей с минимальным количеством LOC (Lines Of Code). Это также помогает уменьшить ошибки программиста и облегчает исправление ошибок.
Управление памятью
Swift явно бьет Objective-C, когда дело доходит до управления памятью. Swift обеспечивает более надежные механизмы управления, позволяя программистам избегать нежелательных утечек памяти.
Производительность
Выполнение кода Swift намного быстрее, чем для Objective-C. Это явно приводит к более быстрой производительности приложений и улучшению пользовательского интерфейса.
Поддерживаемые стили программирования
В отличие от Objective-C, Swift имеет встроенную поддержку функционального программирования. Поэтому разработчикам не нужно ограничиваться какими-либо заранее определенными стилями программирования. Это помогает разработчикам ясно понять проблему и придумать лучшее решение.
Какой из них выбрать?
Точно так же, как Kotlin медленно заменяет Java в нативной разработке под Android, Swift, похоже, наверняка преуспеет в разработке нативных приложений под iOS, вынуждая Objective-C уйти в отставку. Apple уже начала обширную поддержку Swift, и в будущем она станет еще лучше. Как и разработчики Android, разработчики iOS также переживают на данный момент переходный период.
Хотя доступно несколько инструментов миграции кода, может быть невозможно полностью и без проблем преобразовать проекты Objective-C в Swift. Иногда могут потребоваться определенные обходные пути, и для этого может потребоваться глубокое знание Objective-C. Поэтому лучшей стратегией является отдать приоритет Swift и немного изучить Objective-C только тогда, когда это абсолютно необходимо. Кроме того, вам необходимо следить за последними событиями и тенденциями Swift.
Кросс-платформенные приложения
JavaScript (в сочетании с другими технологиями HTML5) является наиболее используемым кросс-платформенным мобильным языком разработки. Существуют также другие языки, такие как Python и Ruby, но JavaScript имеет самый широкий спектр поддержки.
Заключение
Выбор языка мобильной разработки может быть сложным, если вы не понимаете особенностей каждого из них, а также текущих тенденций в отрасли. С учетом этих знаний, однако, легко понять, что выбор языка в значительной степени зависит от конкретной платформы разработки мобильных приложений.
Я уверен, что теперь у вас есть более четкое представление о языках разработки мобильных приложений и что мы можете сопоставить актуальность их функций с последними тенденциями развития. Так что просто начните кодировать свое следующее приложение с полной уверенностью!
Если вам нужна помощь в начале работы с новым языком, ознакомьтесь с некоторыми учебными и видеокурсами, или с некоторыми другими нашими статьями о разработке под мобильные устройства!
Выбираем язык для разработки мобильных приложений
Поэтому давайте сразу перейдем к делу и кратко ответим на самый простой вопрос по теме: «Какие бывают виды мобильных приложений?»:
Веб-приложения. Иначе говоря, мобильные версии сайтов, запускаемые напрямую через браузер вашего устройства. Здесь царят те же законы, часто ограничен функционал, часто трудятся те же самые разработчики, что и над полноценными версиями.
Нативные приложения. Здесь речь идет о приложениях, разработанных под «родную» платформу, то есть Android, iOS или Windows. Они загружаются напрямую из местного магазина, оптимизированы с точки зрения взаимодействия с системой, расхода батареи и полноценного использования возможностей устройства.
Гибридные приложения. В данном пункте есть некоторое расхождение во мнениях: кто-то считает гибридные приложения веб-сайтами, разрабатываемыми по универсальной схеме для десктопов и мобильных устройств. Яркими примерами являются страницы Google или Amazon. Но в данном тексте будем придерживаться несколько другой версии, при этом не исключающей первую: гибридные приложения — это некий компромисс между веб-приложениями и нативными, то есть загружаемые из магазина, имеющие оболочку, написанную на платформенном языке, но имеющие в той или иной степени веб-функционал.
Приложения-эксперименты. Это когда разработчик просто хотел реализовать свою задумку, плевав на правила и целевую аудиторию. Популярностью такие приложения по понятным причинам не пользуются, потому в стандартные классификации обычно не включаются.
Приняв это деление за основу, перейдём непосредственно к языкам.
Веб-приложения
Откровенно говоря, если вы только начинаете свой путь в мобильную разработку, то веб-приложения — прекрасный выбор. Во-первых, с точки зрения языков, вам здесь вполне хватит «больших» HTML5 и JavaScript. Выучить их придётся на хорошем уровне, чтобы пробелы в образовании не приводили к серьёзным багам. Но в остальном даже с точки зрения литературы вполне хватит прочтения двух книг: «Основы разработки веб-приложений» или «HTML5. Разработка приложений для мобильных устройств».
Во-вторых, вам не надо придерживаться никаких норм по платформам и устройствам. Всё что от вас требуется — запихнуть большой сайт в маленькую красивую оболочку. Полученных знаний о языках и более-менее здравого представления о работе подобных приложений на мобильных устройствах хватит для плодотворной работы.
Правда минус такой специализации очевиден — приготовьтесь к тому, что большие деньги на веб-приложениях вы заработаете только имея большое количество заказов от проверенных клиентов и, как следствие, мало свободного времени. И конечно запросы от этих самых клиентов будут самые невероятные.
Нативные приложения
Когда речь заходит о разработки мобильных приложений, все в первую очередь думают именно об их нативном виде. Сразу вспоминается приверженность платформ своим языкам, требования к оформлению и внешнему виду приложения, чтобы оно было загружено в официальный магазин, и примеры того, как делать не надо, хотя формально всем требованиям такое приложение соответствует. С точки зрения погружения в профессию и требований к исполнителю это уже продвинутый уровень.
Базовые языки для iOS — ObjectiveC и Swift. Если вы никогда не сталкивались с первым, то я просто не вижу доводов для его изучения в качестве первого языка. Всё дело в том, что Swift создавался с целью закрыть все недостатки ObjectiveC и не отвергнуть уже состоявшихся разработчиков. В итоге, на сегодняшний день это один из самых прогрессирующих языков, как с точки зрения популярности, так и качественного развития. Для изучения предмета с нуля прекрасно подойдёт книга «Swift. Основы разработки приложений под iOS» или интенсив «Основы языка Swift».
В Android-е вам придётся поработать с Java. Сколько бы там не прошло судов, призывающих Android признать нелегальное использование этого языка, сколько бы не было угроз о принципиальной смене курса, стоит признать, что сотрудничество с Java не утратило своей актуальности. В качестве литературы советую «Android 4. Программирование приложений для планшетных компьютеров и смартфонов». Книга не самая свежая, но новичку больше информации и не надо. Про бесплатный курс «Android. Быстрый старт» от GeekBrains тоже не забывайте.
Ну а платформа Windows проповедует язык С#. С точки зрения разработки именно нативных приложений для WP, ценность изучения C# сомнительна, так как рынок необычайно мал. Но во-первых, C#, как любой популярный язык, всё же помогает создавать достойные кроссплатформенные приложения, например на Xamarin, а во-вторых перспективы роста от мобильных устройств к десктопным — тоже неплохая мотивация. Для вводного начала хватит курса «C#. Быстрый старт».
Кстати, о кроссплатформенности. Большинство по-настоящему крутых нативных приложений не создаётся с использованием только одного языка программирования. В простейшем случае имеет место быть компилирование исходного кода в требуемый, а уже на месте «допиливаются» возможности родной платформы. Но в этом есть определённые сложности, связанные с избыточностью выходного кода и появлением плавающих ошибок, да и с точки зрения вхождения в профессию такого рода рассуждения пользы не принесут.
Уровень знания языков напрямую зависит от сложности желаемого приложения. Помимо указанных в тексте курсов GeekBrains по некоторым языкам, вы можете посетить и другие, например, по созданию конкретных приложений. А дальше, если подобное направление завлечёт, уже сами подберёте удобный только для вас путь развития.
Гибридные приложения
Несмотря на все кажущиеся преимущества данного вида приложений, подводных камней здесь тоже немало. Но касательно сегодняшней темы расскажем о приятном. Языки вы можете использовать любые, в зависимости от того, что у вас за приложение. В простейшем случае, для создания интерфейсной части вы используете нативную часть (Swift, Java, C# и т. д.), а внутренности создаются на HTML5, JS, да и вообще на чем угодно. То есть для того, чтобы перейти на другую платформу, вам придётся потратить куда меньше времени, чем при создании стандартного нативного приложения. В помощь вам специальные фреймворки. вроде PhoneGap или Eclipse. Опять-таки компиляция из любого другого места, в случае чего, поможет.
С точки зрения адаптации под требования платформ тоже никаких проблем. Сделаете кнопку «назад» для iOS, будет она и на Android, пусть даже там она никому не нужна. Просто стандарты здесь совсем другие. Создание гибридного приложения делает акцент именно на идее, остальное — вторично.
Минусы же очевидны — сниженное по сравнению с нативными приложениями быстродействие, меньше возможностей для взаимодействия с устройствами, больше вероятность появления ошибок.
Впрочем, к выбору языка это не имеет никакого отношения, а кажется именно за этим мы здесь собрались.
Во второй части тяжкого выбора первого языка программирования мы затронем тему разработки мобильных приложений. Данное направление ещё не достигло пика своего популярности, да и вообразить тот момент, когда все мы станем менее зависимы от подручных гаджетов, пока представить невозможно.
Поэтому давайте сразу перейдем к делу и кратко ответим на самый простой вопрос по теме: «Какие бывают виды мобильных приложений?»:
Веб-приложения. Иначе говоря, мобильные версии сайтов, запускаемые напрямую через браузер вашего устройства. Здесь царят те же законы, часто ограничен функционал, часто трудятся те же самые разработчики, что и над полноценными версиями.
Нативные приложения. Здесь речь идет о приложениях, разработанных под «родную» платформу, то есть Android, iOS или Windows. Они загружаются напрямую из местного магазина, оптимизированы с точки зрения взаимодействия с системой, расхода батареи и полноценного использования возможностей устройства.
Гибридные приложения. В данном пункте есть некоторое расхождение во мнениях: кто-то считает гибридные приложения веб-сайтами, разрабатываемыми по универсальной схеме для десктопов и мобильных устройств. Яркими примерами являются страницы Google или Amazon. Но в данном тексте будем придерживаться несколько другой версии, при этом не исключающей первую: гибридные приложения — это некий компромисс между веб-приложениями и нативными, то есть загружаемые из магазина, имеющие оболочку, написанную на платформенном языке, но имеющие в той или иной степени веб-функционал.
Приложения-эксперименты. Это когда разработчик просто хотел реализовать свою задумку, плевав на правила и целевую аудиторию. Популярностью такие приложения по понятным причинам не пользуются, потому в стандартные классификации обычно не включаются.
Приняв это деление за основу, перейдём непосредственно к языкам.
Веб-приложения
Откровенно говоря, если вы только начинаете свой путь в мобильную разработку, то веб-приложения — прекрасный выбор. Во-первых, с точки зрения языков, вам здесь вполне хватит «больших» HTML5 и JavaScript. Выучить их придётся на хорошем уровне, чтобы пробелы в образовании не приводили к серьёзным багам. Но в остальном даже с точки зрения литературы вполне хватит прочтения двух книг: «Основы разработки веб-приложений» или «HTML5. Разработка приложений для мобильных устройств».
Во-вторых, вам не надо придерживаться никаких норм по платформам и устройствам. Всё что от вас требуется — запихнуть большой сайт в маленькую красивую оболочку. Полученных знаний о языках и более-менее здравого представления о работе подобных приложений на мобильных устройствах хватит для плодотворной работы.
Правда минус такой специализации очевиден — приготовьтесь к тому, что большие деньги на веб-приложениях вы заработаете только имея большое количество заказов от проверенных клиентов и, как следствие, мало свободного времени. И конечно запросы от этих самых клиентов будут самые невероятные.
Нативные приложения
Когда речь заходит о разработки мобильных приложений, все в первую очередь думают именно об их нативном виде. Сразу вспоминается приверженность платформ своим языкам, требования к оформлению и внешнему виду приложения, чтобы оно было загружено в официальный магазин, и примеры того, как делать не надо, хотя формально всем требованиям такое приложение соответствует. С точки зрения погружения в профессию и требований к исполнителю это уже продвинутый уровень.
Базовые языки для iOS — ObjectiveC и Swift. Если вы никогда не сталкивались с первым, то я просто не вижу доводов для его изучения в качестве первого языка. Всё дело в том, что Swift создавался с целью закрыть все недостатки ObjectiveC и не отвергнуть уже состоявшихся разработчиков. В итоге, на сегодняшний день это один из самых прогрессирующих языков, как с точки зрения популярности, так и качественного развития. Для изучения предмета с нуля прекрасно подойдёт книга «Swift. Основы разработки приложений под iOS» или интенсив «Основы языка Swift».
В Android-е вам придётся поработать с Java. Сколько бы там не прошло судов, призывающих Android признать нелегальное использование этого языка, сколько бы не было угроз о принципиальной смене курса, стоит признать, что сотрудничество с Java не утратило своей актуальности. В качестве литературы советую «Android 4. Программирование приложений для планшетных компьютеров и смартфонов». Книга не самая свежая, но новичку больше информации и не надо. Про бесплатный курс «Android. Быстрый старт» от GeekBrains тоже не забывайте.
Ну а платформа Windows проповедует язык С#. С точки зрения разработки именно нативных приложений для WP, ценность изучения C# сомнительна, так как рынок необычайно мал. Но во-первых, C#, как любой популярный язык, всё же помогает создавать достойные кроссплатформенные приложения, например на Xamarin, а во-вторых перспективы роста от мобильных устройств к десктопным — тоже неплохая мотивация. Для вводного начала хватит курса «C#. Быстрый старт».
Кстати, о кроссплатформенности. Большинство по-настоящему крутых нативных приложений не создаётся с использованием только одного языка программирования. В простейшем случае имеет место быть компилирование исходного кода в требуемый, а уже на месте «допиливаются» возможности родной платформы. Но в этом есть определённые сложности, связанные с избыточностью выходного кода и появлением плавающих ошибок, да и с точки зрения вхождения в профессию такого рода рассуждения пользы не принесут.
Уровень знания языков напрямую зависит от сложности желаемого приложения. Помимо указанных в тексте курсов GeekBrains по некоторым языкам, вы можете посетить и другие, например, по созданию конкретных приложений. А дальше, если подобное направление завлечёт, уже сами подберёте удобный только для вас путь развития.
Гибридные приложения
Несмотря на все кажущиеся преимущества данного вида приложений, подводных камней здесь тоже немало. Но касательно сегодняшней темы расскажем о приятном. Языки вы можете использовать любые, в зависимости от того, что у вас за приложение. В простейшем случае, для создания интерфейсной части вы используете нативную часть (Swift, Java, C# и т. д.), а внутренности создаются на HTML5, JS, да и вообще на чем угодно. То есть для того, чтобы перейти на другую платформу, вам придётся потратить куда меньше времени, чем при создании стандартного нативного приложения. В помощь вам специальные фреймворки. вроде PhoneGap или Eclipse. Опять-таки компиляция из любого другого места, в случае чего, поможет.
С точки зрения адаптации под требования платформ тоже никаких проблем. Сделаете кнопку «назад» для iOS, будет она и на Android, пусть даже там она никому не нужна. Просто стандарты здесь совсем другие. Создание гибридного приложения делает акцент именно на идее, остальное — вторично.
Минусы же очевидны — сниженное по сравнению с нативными приложениями быстродействие, меньше возможностей для взаимодействия с устройствами, больше вероятность появления ошибок.
Впрочем, к выбору языка это не имеет никакого отношения, а кажется именно за этим мы здесь собрались.