Выбираем язык для разработки мобильных приложений
Во второй части тяжкого выбора первого языка программирования мы затронем тему разработки мобильных приложений. Данное направление ещё не достигло пика своего популярности, да и вообразить тот момент, когда все мы станем менее зависимы от подручных гаджетов, пока представить невозможно.
Поэтому давайте сразу перейдем к делу и кратко ответим на самый простой вопрос по теме: «Какие бывают виды мобильных приложений?»:
-
Веб-приложения. Иначе говоря, мобильные версии сайтов, запускаемые напрямую через браузер вашего устройства. Здесь царят те же законы, часто ограничен функционал, часто трудятся те же самые разработчики, что и над полноценными версиями.
-
Нативные приложения. Здесь речь идет о приложениях, разработанных под «родную» платформу, то есть 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, пусть даже там она никому не нужна. Просто стандарты здесь совсем другие. Создание гибридного приложения делает акцент именно на идее, остальное — вторично.
Минусы же очевидны — сниженное по сравнению с нативными приложениями быстродействие, меньше возможностей для взаимодействия с устройствами, больше вероятность появления ошибок.
Впрочем, к выбору языка это не имеет никакого отношения, а кажется именно за этим мы здесь собрались.