Основы программирования под Android на примере игры Судоку. Пишем первое приложение для Android

Операционная система Android от Google идеально подходит для разработчиков, которые хотят создавать приложения для мобильных телефонов без того, чтобы каждый раз проходить сложные процессы одобрения, присутствующие в Apple.

Это руководство направлено на то, чтобы рассказать вам о необходимом ПО и инструментах, которые помогут вам без труда заняться разработкой собственного приложения.

Не столько важно то, насколько хорошо вы подкованы в программировании, так как если вы сумеете овладеть набором разработки ПО для Android (SDK), то ваши приложения будут получаться просто превосходными. Итак, ознакомьтесь с представленными ниже материалами, чтобы влиться в процесс.

Java Development Kit

Первое, что вам понадобится, чтобы начать разработку java-приложений (основа Android-приложений), это Java Development Kit (JDK) от Oracle, который можно скачать по следующей ссылке.

Вероятно, вы в какой-то форме уже скачивали и устанавливали Java Runtime Environment (JRE), необходимую для запуская апплетов на вашем компьютере. Вам нужно удалить версию JRE, которая на данный момент установлена на вашем компьютере в случае, если она конфликтует с версией JDK, которую вы скачиваете. К счастью, вышеприведенная версия включает в себя последнюю и лучшую версию JRE, которая точно будет совместима с JDK, что исключает необходимость переустанавливать её.

Скачайте и запустите установщик, убедитесь, что ‘Development Tools’, ‘Source Code’ и ‘Public JRE’ включены в установку в окне ручной установки (можно увидеть ниже). Нажмите ‘Next’, прочтите условия лицензионного соглашения, если у вас есть достаточно свободного времени, и приступайте к установке.

Хотя большинство приложений интегрированной среды разработки (IDE) – в следующем этапе мы поговорим об этом подробнее – предоставляются с собственным компилятором, я рекомендую вам встроить только что установленный Java-компилятор в командную строку, чтобы вы могли пользоваться им по востребованию.

Если вы используете Windows, пройдите в настройки системы из панели управления и выберите расширенные настройки системы. Здесь выберите ‘Environment Variables’ и найдите переменную ‘Path’. Добавьте пусть до файла в виде каталога ‘bin’ до вашей установки Java, как показано на примере ниже.

Чтобы проверить, все ли прошло успешно, используйте команды ‘java -version’ и ‘javac -version’. У вас должно отобразиться нечто следующее:



Установка IDE

Интегрированные среды разработки часто используются сезонными разработчиками и новичками, которые хотят разрабатывать приложения. Для тех, кто не в курсе, IDE – это приложение, которое помогает программистам в написании кода, предоставляя сжатый набор инструментов вроде отладчиков, компиляторов и многого другого.

Хотя в интернете существует множество IDE, здесь мы будем использовать бесплатное ПО Eclipse, так как Google предоставляет плагин для интеграции его с Android SDK. Скачать необходимую версию Eclipse можно .

Здесь все может отличаться от случая к случаю, но когда я скачивал ресурс, ПО было предоставлено в виде zip-архиве, который содержал файл ‘eclipse.exe’, работу с которым можно было начать без каких-либо установок. Если ваша версия требует установки, то самостоятельно произведите ее, так как здесь нет каких-то особенных требований и настроек. При первом запуске, ПО запросит у вас указать ‘Workbench’, где расположены ваши коды и сопутствующие файлы. Укажите удобное вам расположение.

Как только завершите, перед вами будет отображено следующее:

Если вам хочется немного ознакомиться с Eclipse перед работой, то откройте окошко Help, и просмотрите руководство Workbench User Guide. Здесь также можно видеть руководство Development User Guide, которое поможет вам освоить базовый навык работы с Java, если вы до сих пор не знакомы с этим языком.

Скачиваем Android SDK

Пройдите по этой ссылке и нажмите ‘Get the SDK’. На следующей странице вам будет предложена ссылка для установки Android SDK на ваш компьютер.

Как только завершится скачивание исполнительного файла, запустите установку. Когда дойдете до окошка, приведенного ниже, укажите путь до директории, куда вы хотите произвести установку, или запомните тот, что уже указан.

Когда установка будет завершена, откройте Android SDK Manager, и тогда перед вами окажется следующее окошко:

Нажмите на кнопку для установки всех необходимых пакетов и ресурсов, которые не были включены в исходную установку.

Устанавливаем плагин Android Development Tools

Как уже было отмечено выше, Google предлагает специальный плагин Android SDK для Eclipse, который можно добавить прямо из IDE.

В Eclipse пройдите в ‘Help’ и выберите ‘Install New Software’. Нажмите кнопку ‘Add’, и тогда вы будете перемещены к окошку, которое позволит вам добавить онлайн-репозиторий ПО, содержащий плагин ADT. Задайте описательное название, и введите следующий URL в блок ‘Location’:

  • http://dl-ssl.google.com/android/eclipse

Нажмите ‘OK’. Выберите только что добавленный репозиторий и установите галочку ‘Developer Tools’.

Нажмите ‘Next’ , и пройдите по этапам установки файлов плагина. После завершения, в вашей панели управления Eclipse должны появиться следующие 2 иконки:

Теперь пройдите в ‘Window’ и ‘Preferences’, выберите раздел ‘Android’ и убедитесь, что SDK Location совпадает с SDK directory, которую вы указали ранее. В результате у вас должно получиться следующее:

Теперь вы являетесь владельцем плагина Android Development Tools.

Настраиваем эмулятор Android

Хотя это и помогает, на самом деле вам не обязательно иметь под рукой все модели Android-устройств, чтобы создавать под них приложения, так как Google снабжает нас отличным эмулятором собственной мобильной ОС вместе с SDK. Перед тем, как начать разработку, нам желательно настроить Android Virtual Device (AVD), чтобы платформа для тестирования была готова заранее.

Теперь нам нужно создать новое виртуальное устройство. Данный пример подразумевает создание общего устройства, но существуют также ресурсы для конкретных настроек под Android-устройства. Выберите ‘New’, и перед вами окажется пустое окошко, приведенное ниже:

  • Name: если вы хотите тестировать приложение на нескольких настройках устройств, то вам нужно будет ввести нечто описательное. С другой стороны, также можно использовать и более обобщенное название.
  • Target: это версия Android, на которую будет направлен эмулятор. В большинстве случаев, вашей опцией будет последняя версия Android, которая вместе с устанавливаемым SDK. Тем не менее, если вы хотите провести тестирование на более ранних версиях (что было бы довольно мудро, учитывая столь огромное множество различных версий и моделей), тогда воспользуйтесь SDK manager, чтобы установить дополнительные версии.
  • SD card: указатель дополнительного дискового пространства, которое будет использоваться в устройстве. По умолчанию, виртуальное устройство имеет 194 мегабайта «внутренней» памяти и SD-карту, поэтому вам нужно будет вручную указать необходимое значение объема дискового пространства.
  • Skin: вы можете использовать эту опцию для установки внешнего вида и конфигураций конкретного устройства (HTC One X, к примеру). Но в нашем случае мы используем стандартное значение.
  • Hardware: так как среди физических устройств на базе Android существуют существенные различия с точки зрения аппаратного оснащения, вы можете использовать эту опцию, чтобы добавлять любое оснащение, которое будет использоваться вашим приложением.

По завершеии окошко AVD Manager должно включать в себя ваше только что созданное устройство. Вы можете нажать ‘Start’, чтобы запустить это устройство, только учитывайте, что первый запуск может потребовать времени.



Ваш первый Android-проект

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

Чтобы начать, пройдите в ‘File’, ‘New’, ‘Project’ и раскройте вкладку Android. Выберите там ‘Android Application Project’, и перед вами откроется следующее окошко:

Вы можете воспользоваться выпадающими меню возле каждого поля, чтобы выбрать соответствующее значение. Главное, что следует учитывать, это ‘Application Name’, которое отвечает за название нашего приложение при установке, а также ‘Minimum Required SDK’, при помощи которого вы указываете самую раннюю версию Android, поддерживающую ваше приложение.

Нажмите ‘Next’, чтобы продолжить, и установите иконку исполняемого файла, которая будет лицом вашего приложения. В следующем меню вас попросят создать ‘Activity’ для вашего приложения.

Это действие или представление, с которым пользователь будет взаимодействовать, поэтому логичнее всего будет разделить ваше приложение на активность с точки зрения того, какие окна пользователь будет видеть, и того, какой функционал будет доступен на каждом из них. Итак, если вы, к примеру, создаете простую программу «Hello World», то вам понадобится лишь одно активное окно, которое представляет текст, а все настройки интерфейса извлекаются из ресурсных файлов, которые создает SDK.

Когда вы определились с этими окнами, нажмите ‘Finish’. Eclipse соберет все необходимые для приложения файлы вместе, в которые вы будете вписывать код и/или изменять настройки для указания параметров вашей программы.

И на этом все! Все готово к тому, чтобы собрать готовое приложение. В Google можно найти полноценные руководства о том, как заниматься разработкой Android-приложений (для тех, у кого есть опыт в программировании). Всем, кто собирается заниматься Java-программированием, также следует сначала ознакомиться с руководствами вроде того, что нам предоставила компания Oracle.

Программирование является одним из тех направлений, где каждый может почувствовать себя в роли творца. Обычно под ним понимают разработку приложений под персональные компьютеры, единицы производственной техники или просто для электронных самоделок. Но с распространением сенсорных мобильных устройств всё популярней становится программирование под Android, iOS или другую системную оболочку подобного типа. Что ж, надо признать, занятие это перспективное. Поэтому в рамках статьи будет рассмотрено, под Android с нуля. Какие особенности здесь существуют? Какой язык используется?

Создание программ

Прежде чем самостоятельно писать программы, необходимо изучить все нужные для этого составляющие:

  1. Язык.
  2. Выбрать среду разработки. На языке мы ещё остановимся детально, как, впрочем, и на программных продуктах, где будут создаваться приложения. Но сначала немного поговорим о средах разработки. Условно их можно поделить на три составляющие:
  • графические;
  • обычные;
  • онлайн.

По созданию программ надо отметить, что сейчас сложно выдвинуть идею, которая не была бы уже ранее проработана. Поэтому при возникновении проблемы или просто в случае отсутствия знаний необходимо грамотно сформулировать возникшее недоразумение и обратится к более опытным программистам. Они смогут помочь в деле создания программ конструктивным советом.

На каком языке пишутся программы?

Для этих целей используется Java. Следует отметить, что это довольно сложный язык программирования. Но для создания своих приложений вовсе не обязательно совершенно знать его. Достаточно будет базовых знаний и навыков работы со справочной информацией, чтобы получать ответы на свои вопросы. К тому же существуют определённые заготовки, воспользовавшись которыми, можно будет сделать некоторые шаги по созданию приложения без значительных проблем. Тогда программирование под Android превращается в одно удовольствие.

Выбираем обычную среду разработки

В качестве самых серьезных игроков рассматриваются Eclipse и Android SDK. Они обе являются бесплатными. В целом следует отметить, что эти среды разработки - серьезные конкуренты, и каждая из них обладает рядом сильных и слабых сторон. Изучать стоит каждую из них. Отдельно позволим себе только немного остановиться на одном аспекте Android SDK - эмуляторе. Он является программой, которая выдаёт себя за телефон или планшет, что работает на базе "Андроида". Эмулятор спокойно работает на обычном компьютере и на рабочем столе выглядит как стандартное мобильное устройство. Существует единственная особенность - управляется он с помощью мышки и клавиатуры, а не пальцем. В эмуляторе можно будет проверить работоспособность приложения под различные расширения экрана, а также на разных версиях мобильной операционной системы "Андроид". Поэтому, как бы это странно для вас ни звучало, но во время разработки приложений, нацеленных на Android, иметь телефон - вовсе не обязательно.

Что нужно для разработки своего приложения?

Графические среды разработки

Этот вариант подойдёт тем, кто не имеет понятия о программировании вообще, но желает получить своё приложение здесь и сейчас. Для начала следует ознакомиться с описанием и возможностями графических сред разработки. Так, некоторые могут размещать только простейшие элементы и прикреплять к ним минимальный функционал. Подобные ресурсы лучше не использовать, поскольку с их помощью будет сложно понять логику работы и создать развитой конечный продукт. Желательно делать отбор по таким параметрам:

  1. Наличие интуитивно понятного интерфейса.
  2. Использование понятной логики работы.
  3. Возможность создания элементов в графическом и кодовом режимах.
  4. Наличие документации по работе со средой разработки и форума поддержки.

Онлайн-среда разработки

Они могут предоставить довольно широкий функционал в простой точке доступа - интернете. «Онлайн-среда разработки» - вероятно, этим всё сказано. Хотя следует уточнить, что под Android всё же является нелегким делом. Так, наиболее сложно будет реализовать шутеры и похожие по сложности приложения. А вот программы с текстовым оформлением и передачей данных - это легко.

Заключение

Надеемся, вопросов по первым шагам подготовки к созданию своих программ больше нет. Если же вы решили всерьез заняться программированием, то можно воспользоваться специальной литературой. К примеру, книгой «Программирование под Android» Харди Браяна. Конечно, это не единственный хороший труд, но с чего-то же надо начинать. Вот с ознакомления с данным пособием и можно начать путь к успеху.

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

Статья затронет весь цикл разработки приложения. Вместе мы напишем простенькую игру “Крестики-Нолики” с одним экраном (в ОС Android это называется Activity).

Отсутствие опыта разработки на языке Java не должно стать препятствием в освоении Android. Так, в примерах не будут использоваться специфичные для Java конструкции (или они будет минимизированы на столько, на сколько это возможно). Если Вы пишете, например, на PHP и знакомы с основополагающими принципами в разработке ПО, эта статья будет вам наиболее полезна. В свою очередь так как, я не являюсь экспертом по разработке на Java, можно предположить, что исходный код не претендует на лейбл “лучшие практики разработки на Java”.

Установка необходимых программ и утилит

Перечислю необходимые инструменты. Их 3:

  1. IDE c поддержкой разработки для Android:
    • Eclipse + ADT plugin;
    • IntelliJ IDEA Community Edition;
    • Netbeans + nbandroid plugin;

Утилиты устанавливаются в определенном выше порядке. Ставить все перечисленные IDE смысла нет (разве только если Вы испытываете затруднения с выбором подходящей). Я использую IntelliJ IDEA Community Edition, одну из самых развитых на данный момент IDE для Java.

Запуск виртуального устройства

Запустив AVD Manager и установив дополнительные пакеты (SDK различных версий), можно приступить к созданию виртуального устройства с необходимыми параметрами. Разобраться в интерфейсе не должно составить труда.

Список устройств

Создание проекта

Мне всегда не терпится приступить к работе, минимизируя подготовительные мероприятия, к которым относится создание проекта в IDE, особенно, когда проект учебный и на продакшн не претендует.

Итак, File->New Project:

По нажатию кнопки F6 проект соберется, откомпилируется и запустится на виртуальном девайсе.

Структура проекта

На предыдущем скриншоте видна структура проекта. Так как в этой статье мы преследуем сугубо практические цели, заострим внимание лишь на тех папках, которые будем использовать в процессе работы. Это следующие каталоги: gen , res и src .

В папке gen находятся файлы, которые генерируются автоматически при сборке проекта. Вручную их менять нельзя.

Папка res предназначена для хранения ресурсов, таких как картинки, тексты (в том числе переводы), значения по-умолчанию, макеты (layouts).

src - это папка в которой будет происходить основная часть работы, ибо тут хранятся файлы с исходными текстами нашей программы.

Первые строки

Как только создается Activity (экран приложения), вызывается метод onCreate(). IDE заполнила его 2 строчками:
super.onCreate(savedInstanceState); setContentView(R.layout.main);
Метод setContentView (равносильно this.setContentView) устанавливает xml-макет для текущего экрана. Далее xml-макеты будем называть «layout», а экраны - «Activity». Layout в приложении будет следующий:

Для этого приложения идеально подойдет TableLayout. Id можно присвоить любому ресурсу. В данном случае, TableLayout присвоен id = main_l. При помощи метода findViewById() можно получить доступ к виду:
private TableLayout layout; // это свойство класса KrestikinolikiActivity public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); layout = (TableLayout) findViewById(R.id.main_l); buildGameField(); }

Теперь необходимо реализовать метод buildGameField(). Для этого требуется сгенерировать поле в виде матрицы. Этим будет заниматься класс Game. Сначала нужно создать класс Square для ячеек и класс Player, объекты которого будут заполнять эти ячейки.

Square.java

package com.example; public class Square { private Player player = null; public void fill(Player player) { this.player = player; } public boolean isFilled() { if (player != null) { return true; } return false; } public Player getPlayer() { return player; } }

Player.java

package com.example; public class Player { private String name; public Player(String name) { this.name = name; } public CharSequence getName() { return (CharSequence) name; } }

Все классы нашего приложения находятся в папке src.

Game.java

package com.example; public class Game { /** * поле */ private Square field; /** * Конструктор * */ public Game() { field = new Square; squareCount = 0; // заполнение поля for (int i = 0, l = field.length; i

Инициализация Game в конструкторе KrestikinolikiActivity.
public KrestikinolikiActivity() { game = new Game(); game.start(); // будет реализован позже }

Метод buildGameField() класса KrestikinolikiActivity. Он динамически добавляет строки и колонки в таблицу (игровое поле):
private Button buttons = new Button; //(....) private void buildGameField() { Square field = game.getField(); for (int i = 0, lenI = field.length; i
В строке 8 создается объект, реализующий интерфейс View.OnClickListener. Создадим вложенный класс Listener. Он будет виден только из KrestikinolikiActivity.
public class Listener implements View.OnClickListener { private int x = 0; private int y = 0; public Listener(int x, int y) { this.x = x; this.y = y; } public void onClick(View view) { Button button = (Button) view; } }
Осталось реализовать логику игры.
public class Game { /** * игроки */ private Player players; /** * поле */ private Square field; /** * начата ли игра? */ private boolean started; /** * текущий игрок */ private Player activePlayer; /** * Считает колличество заполненных ячеек */ private int filled; /** * Всего ячеек */ private int squareCount; /** * Конструктор * */ public Game() { field = new Square; squareCount = 0; // заполнение поля for (int i = 0, l = field.length; i

Определение победителя

К. О. подсказывает, что в крестики-нолики выирывает тот, кто выстроет X или O в линию длиной, равной длине поля по-вертикали, или по-горизонтали, или по-диагонали. Первая мысль, которая приходит в голову - это написать методы для каждого случая. Думаю, в этом случае хорошо подойдет паттерн Chain of Responsobility. Определим интерфейс
package com.example; public interface WinnerCheckerInterface { public Player checkWinner(); }
Так как Game наделен обязанностью выявлять победителя, он реализует этот интерфейс. Настало время создать виртуальных «лайнсменов», каждый из которых будет проверять свою сторону. Все они реализует интерфейс WinnerCheckerInterface.

WinnerCheckerHorizontal.java

package com.example; public class WinnerCheckerHorizontal implements WinnerCheckerInterface { private Game game; public WinnerCheckerHorizontal(Game game) { this.game = game; } public Player checkWinner() { Square field = game.getField(); Player currPlayer; Player lastPlayer = null; for (int i = 0, len = field.length; i

WinnerCheckerVertical.java

package com.example; public class WinnerCheckerVertical implements WinnerCheckerInterface { private Game game; public WinnerCheckerVertical (Game game) { this.game = game; } public Player checkWinner() { Square field = game.getField(); Player currPlayer; Player lastPlayer = null; for (int i = 0, len = field.length; i

WinnerCheckerDiagonalLeft.java

package com.example; public class WinnerCheckerDiagonalLeft implements WinnerCheckerInterface { private Game game; public WinnerCheckerDiagonalLeft(Game game) { this.game = game; } public Player checkWinner() { Square field = game.getField(); Player currPlayer; Player lastPlayer = null; int successCounter = 1; for (int i = 0, len = field.length; i

WinnerCheckerDiagonalRight.java

package com.example; public class WinnerCheckerDiagonalRight implements WinnerCheckerInterface { private Game game; public WinnerCheckerDiagonalRight(Game game) { this.game = game; } public Player checkWinner() { Square field = game.getField(); Player currPlayer; Player lastPlayer = null; int successCounter = 1; for (int i = 0, len = field.length; i
Проинициализируем их в конструкторе Game:
//(....) /** * "Судьи" =). После каждого хода они будут проверять, * нет ли победителя */ private WinnerCheckerInterface winnerCheckers; //(....) public Game() { //(....) winnerCheckers = new WinnerCheckerInterface; winnerCheckers = new WinnerCheckerHorizontal(this); winnerCheckers = new WinnerCheckerVertical(this); winnerCheckers = new WinnerCheckerDiagonalLeft(this); winnerCheckers = new WinnerCheckerDiagonalRight(this); //(....) }
Реализация checkWinner():
public Player checkWinner() { for (WinnerCheckerInterface winChecker: winnerCheckers) { Player winner = winChecker.checkWinner(); if (winner != null) { return winner; } } return null; }
Победителя проверяем после каждого хода. Добавим кода в метод onClick() класса Listener
public void onClick(View view) { Button button = (Button) view; Game g = game; Player player = g.getCurrentActivePlayer(); if (makeTurn(x, y)) { button.setText(player.getName()); } Player winner = g.checkWinner(); if (winner != null) { gameOver(winner); } if (g.isFieldFilled()) { // в случае, если поле заполнено gameOver(); } }
Метод gameOver() реализован в 2-х вариантах:
private void gameOver(Player player) { CharSequence text = "Player \"" + player.getName() + "\" won!"; Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); game.reset(); refresh(); } private void gameOver() { CharSequence text = "Draw"; Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); game.reset(); refresh(); }
Для Java, gameOver(Player player) и gameOver() - разные методы. Воспользовавшись Builder"ом Toast.makeText, можно быстро создать и показать уведомление. refresh() обновляет состояние поля:
private void refresh() { Square field = game.getField(); for (int i = 0, len = field.length; i

Готово! Надеюсь, эта статья помогла Вам освоиться в мире разработки под OS Android. Благодарю за внимание!

Видео готового приложения

Операционная система Android установлена на 66.71% всех мобильных устройств в мире. Так что нет ничего удивительного, что многие начинающие айтишники желают реализовывать свои амбиции именно на этой платформе.

Совсем недавно на GeekBrains мы затрагивали для мобильных платформ, но в этот раз остановимся поподробнее на Android. Вот 10 языков, которые позволят вам создать мобильное приложение любого типа и сложности:

Java

Не будет большим преувеличением назвать Java официальным языком Android. Во всяком случае, почти вся образовательная документация, все интернет-курсы основаны на этом. А еще это самый популярный язык по оценке TIOBE, второй по количеству исходников на GitHub, да и вообще большой красивый язык. Именно поэтому изучение Java должно быть первоочередной задачей для любого Android-разработчика. Пусть это будет непросто (все-таки языку 22года, а легкость никогда не была его коньком), пусть теоретически можно обойтись более современными языками, помните - невозможно добиться существенных успехов на Android, абсолютно не понимая Java, не говоря уже о конкретных исходниках.

C#

При всем нескончаемом скепсисе, направленным в сторону продуктов Microsoft, стоит признать, что C# этого не заслуживает. Это прекрасный язык, вобравший в себя всё лучшее от Java, при этом учтя и исправив многие недостатки.

Что касается разработки приложений под Android, то здесь к вашим услугам одни из самых функциональных сред Visual и Xamarin Studio . А еще знание C# станет для вас приятным бонусом, когда доберетесь до использования Unity 3D . С таким набором возможности будут безграничны.

Python

Тот факт, что Android не поддерживает использование Python для создания нативных приложений, еще не означает, что это невозможно. Любители этого змеиного языка разработали множество инструментов, позволяющих скомпилировать код на Python в требуемое состояние.

Самым популярным фреймворком является Kivy , который без труда поможет вам создать приложение для Play Market на чистом Python. А если нет, то помогут добрые разработчики в чате . Если вы еще не овладели им, рекомендуем пройти .

Kotlin

В тексте про я уже пытался объяснить, почему Kotlin сам по себе отличный язык, а в связке с Java он ещё лучше. Действительно, официально выпущенный лишь год назад, Kotlin очень быстро завоевывает сердца разработчиков по всему миру практически полным отсутствием недостатков.

С его помощью (точнее с помощью родной среды IntelliJ IDEA) вы не будете чувствовать никаких проблем в разработке нативных приложений для Android. При этом спрос на специалистов Kotlin пока низок, а значит, получив опыт работы с ним, вы рискуете в будущем получить конкурентное преимущество.

Языки веба

Стандартный языковой набор работника веба: HTML, CSS и JavaScript. Не зная эти 3 языка, вы сведете себя к разработке приложений достаточно узкой направленности. Даже если вы непосредственно веба в будущей работе касаться не хотите, то гибридных приложений избежать получиться вряд ли.

Работать с HTML, CSS и JavaScript можно используя среды PhoneGap Build или, в более специализированном случае, Adobe Cordova . Больших знаний они от вас не потребуют, а результат обеспечат. Или вот из последнего, React Native от Facebook - это уже следующий уровень удобства взаимодействия, но опыта и документации скопилось мало. В общем, выбирайте, благо есть из чего.

Lua

Язык, который старше Java, куда менее популярный, но всё равно востребованный. У него есть ряд преимуществ, вроде динамической типизации, относительно простого синтаксиса, но до наших дней он дожил благодаря задействованности в играх. Именно удобство создания программной прослойки между движком и оболочкой открыло перед Lua двери в мир карманных гаджетов.

Corona SDK - среда для разработки мобильных кроссплатформенных приложений, преимущественно игр, где главным инструментом является Lua. С 2015 года она распространяется бесплатно, рассчитана на начинающих разработчиков, плюс ко всему вы можете найти много полезной информации, как в англоязычном, так и русскоязычном сегменте интернета.

C/C++

На самом деле Google предоставляет разработчиков две среды разработки: SDK, предназначенная для работы с Java, и NDK , где нативными языками являются C/C++. Да, конечно вы не напишете целое приложение с использованием лишь этих языков, но с их помощью вы можете создать библиотеку, которую впоследствии при помощи Java подключите к основному телу программы.

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

А на каких языках пишете вы?

Возраст ОС Android приближается к десятилетнему юбилею. Хотя с момента первого релиза этой операционной системы прошло уже столько времени, это вовсе не означает, что поезд ушёл, а учиться разработке Android-приложений уже поздно. На самом деле, именно сейчас самое время научиться: ещё никогда не существовало так много эффективных способов создания потрясающих приложений для Android.

А ещё все новые Хромбуки отныне и навсегда обзавелись поддержкой Android-приложений: их можно скачивать, устанавливать и запускать, как в родной среде. Рынок Android-программ лишь растёт. Не следует думать, что время ушло – ещё совсем не поздно начать. Всё, что нужно для старта: приготовиться, сделать глубокий вдох, подобрать подходящий язык программирования – и начать свое путешествие.

Но какой язык программирования будет лучшим именно для вас? Выбор подходящего инструмента разработки – первая задача, с которой никто не справится лучше вас. Многое зависит от опыта в программировании (либо от отсутствия опыта в конкретных средах разработки), от личного комфорта при использовании того или иного языка. К счастью, выбор приличный. В данной статье рассмотрена подборка лучших языков программирования для Android.

Когда дело касается приложений для Android, язык Java никак не может стать неверным выбором. Помимо того, что это официальный язык программирования данной ОС, он ещё и второй по распространённости на ресурсе GitHub, и столь популярен он уже более 20 лет. Это значит, что инструкций и учебников по Java существует великое множество, да и беспокоиться об устаревании этого языка в ближайшем будущем совершенно не следует.

Так как язык Java широко распространился по десяткам отраслей программирования, мы рекомендуем начать его изучение с книг, посвящённых Java в контексте экосистемы Android. Разумеется, Java один и тот же во всех средах, но отдельные парадигмы и выражения помогут пытливому уму быстрее вникнуть в суть разработки Android-приложений. Именно такую задачу и ставят перед собой большинство книг на эту тему.

Стоит отметить, что из-за почтенного возраста Java ему не хватает некоторых характерных особенностей, присущих более молодым языкам. Новичкам это не столь важно, однако для более опытных программистов, переходящих на этот язык, скажем, со Swift, Java может поначалу вызывать приступы клаустрофобии.

Язык программирования Kotlin был создан специально для работы на виртуальных машинах Java. Это означает, что приложения Kotlin компилируются в код Java, что позволяет им запускаться на любых машинах с поддержкой Java-среды. А так как поддержкой Java обладает большинство машин, то использование Kotlin – сравнительно простой способ разработки кросс-платформенного ПО.

Использование Kotlin – это применение в программном продукте всех лучших сторон Java, без его недостатков. Синтаксис и другие особенности программирования на Kotlin современны, понятны, быстры. Это действительно удобная среда для разработки. Там, где Java кажется громоздким, неуклюжим и староватым языком, Kotlin выглядит комфортно, свежо и даже красиво. В какой-то степени можно считать, что Kotlin был специально создан для разработки приложений Android.

Обратная сторона медали? Kotlin – очень молодой язык. Его первые версии были выпущены в 2011 году, а официальный релиз состоялся лишь в 2016. Есть и хорошие новости: Kotlin – бесплатный и с открытым исходным кодом. Стоит ожидать, что он будет развиваться семимильными шагами. Но в любом случае должно пройти несколько лет, прежде чем этот язык зарекомендует себя по-настоящему надёжным выбором.

C# — невероятный язык программирования! Он взял от Java всё самое лучшее, оставив за бортом худшие особенности этого языка. И развивался он в том же правильном русле. Похоже, что в Microsoft некогда разглядели потенциал Java и решили разработать собственную, лучшую версию.

Долгое время серьёзным недостатком использования C# было то, что он работал лишь в системах Windows: этот язык основывается на.NET Framework. Но в 2014 году это обстоятельство изменилось: Microsoft открыла исходные коды.NET Framework. Более того, в 2016 году корпорация приобрела компанию Xamarin – разработчика Mono (проект, позволяющий программам C# работать на различных платформах).

Итогом этих славных дел стало то, что сегодня можно использовать среды Xamarin.Android и Xamarin.iOS для создания мобильных приложений в Visual Studio или Xamarin Studio. Отличный способ для начала разработки, ведь в дальнейшем можно будет использовать средства этого языка в других областях – скажем, создание сложных игр при помощи Unity и C#. Наглядные примеры приложений, созданных в Xamarin? MarketWatch – ни больше, ни меньше.

Наконец, отметим, что ещё недавно за работу в Xamarin требовалась плата. Но Microsoft сделала эту среду бесплатной!

Хотя Android не обладает нативной поддержкой Python, существуют инструменты, позволяющие писать приложения на Python, а затем конвертировать их в «родные» для Android приложения APK. Великолепный пример жизнеспособности Python в качестве действительно эффективного языка. Почитатели языка Python, желающие попробовать себя в разработке Android-приложений, обязательно оценят эту возможность – не вникая при этом в дебри Java.

Среди наиболее популярных решений для конвертации кода Python в APK – проект Kivy. И дело даже не в его природе open source, и не только в поддержке Windows, Mac, Linux и iOS вдобавок к Android. Kivy спроектирован таким образом, чтобы действительно ускоряет разработку приложений. Во всяком случае, можно использовать его в качестве инструмента для прототипирования. Сколько всего можно сделать при помощи лишь нескольких строк кода!

Впрочем, в отсутствии у Python нативной поддержки, не получится воспользоваться и преимуществами родной для Android среды. Приложения, написанные с Kivy, как правило, компилируются в более объёмные APK, медленный старт и, в целом, производительность ниже среднего. Однако каждый вновь выпущенный релиз по-настоящему лучше предыдущего, а мобильные устройства сегодняшнего дня настолько мощны, что неоптимальная производительность приложений значит не столь уж много. Пусть этот фактор не будет препятствием.

Пара примеров приложений на Android, написанных в Kivy: Kognitivo и Barly.

  1. HTML5 + CSS + JavaScript

Эта тройка языков, когда-то созданных для разработки фронт-энд приложений в веб-среде, с тех пор переросла в нечто большее. Теперь инструментов HTML5, CSS и JavaScript вполне достаточно для создания самых разных приложений и для мобильных устройств, и для классических ПК. По сути, программист создаёт веб-приложение, способное использовать всю мощь и магию оффлайн-платформ.

Для создания Android-приложений этим способом можно использовать возможности Adobe Cordova – это фреймворк с открытым исходным кодом, который также поддерживает операционные системы iOS, Windows 10 Mobile, Blackberry, Firefox, и многие другие. Однако, какой бы полезной ни была Cordova, для создания в ней сколь-нибудь приличного приложения требуется серьёзная работа. Поэтому многие программисты отдают предпочтение проекту Ionic Framework (который использует «Кордову» для развертывания на различных платформах).

Примеры приложений для Android, написанные на HTML5, JavaScript и CSS: Untappd и TripCase.

Есть и другая возможность: использование библиотеки React Native. Её можно развернуть на Android, iOS и платформе «Универсальных приложений Windows». Эту библиотеку используют специалисты Facebook, Instagram и других крупных компаний, поэтому можно положиться на её надёжность. Обучение не самое простое, но когда оно подойдёт к финалу, в ваших руках будет вся мощь, гибкость и удобство, которые только можно пожелать.

Lua – старый скриптовый язык, который изначально создавался в качестве дополнения для программ, написанных на более сложных языках: C, VB.NET и т.д. В этом языке есть некоторые особенности, которые выделяют Lua из ряда подобных ему – к примеру, начало массивов с 1 вместо 0, или отсутствие нативных классов.

Таким образом, для определённых задач Lua можно использовать в качестве основного языка программирования. Лучший тому пример – SDK Corona. При помощи Corona можно создавать мощные, богатые по функциональности приложения с возможностью развёртывания на Windows, Mac, Android, iOS, и даже Apple TV + Android TV. В Corona также встроены возможности для монетизации, плюс – это приличный по объёмам рынок, где можно отыскать полезные в работе плагины.

Чаще всего Corona используют для создания игр (среди примеров – Fun Run 2 и HoPiko), однако есть и образцы утилит, а также бизнес-приложений (My Days и Quebec Tourism).

  1. C/C++

Для создания приложений Android, Google официально предоставляет две среды разработки:

  • SDK (использует Java);
  • и NDK (использует нативные языки, наподобие C и C++).

Отметим, что для создания приложения целиком, использовать C, C++ и «голый» Java не получится. Вместо этого NDK позволяет создавать библиотеки, к функциям которых могут обращаться части Java-кода из приложения.

Как правило, нет необходимости использовать NDK. Эту среду не стоит использовать в качестве основной хотя бы потому, что придётся больше заниматься кодингом на C/C++, а не на Java. Существование NDK оправдано в тех задачах, когда требуется выжать как можно больше производительности при выполнении сложных вычислительных задач. Также NDK позволяет внедрять в приложение библиотеки C и C++.

Но в других случаях стоит придерживаться Java везде, где возможно. Разработка Android-приложений на C/C++ в разы сложнее, чем на Java. И чаще всего выигрыш в производительности слишком незначителен.

Какими приложениями вы хотели бы заняться?

Мессенджеры, игры, калькуляторы, блокноты, проигрыватели. Возможности безграничны! Во многом они безграничны благодаря перечисленным выше языкам программирования и фреймворкам. Не нужно изучать их всех подряд – лишь те, которые пригодятся именно в решении вашей задачи. Если в будущем потребуется расширить собственные знания, то можно заняться самообразованием, когда настанет время.

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