Всем привет! На сегодняшний день IT индустрия, пожалуй, самая быстрорастущая, а поэтому знание основ программирования уже не выглядит специфическим навыком, а является частью современной грамотности прогрессивного человека. Однако, кому интересны сухие знания без практики, так? Поэтому было бы здорово реализовать их хотя бы в домашнем проекте “чисто для себя”, а где мы сегодня чаще всего используем ПО, как не на смартфоне? Именно поэтому мы и напишем простенькое (или не очень) андроид приложение.
Стоит сразу сказать, что этот цикл статей рассчитан на тех, кто совсем (ну или почти) не знаком с программированием в принципе, и с Android-разработкой в частности, а по сему не ждите здесь кейсов из enterprise-разработки, хитрых алгоритмов для экономии ресурсов и всего вот этого вот.
Настройка окружения
И так, приступим. Программировать мы будем на Java, т.к. именно на ней пишутся Android-приложения (React-native для неполноценных). В этом уроке я расскажу про программирование в целом, разберу подробнее структуру программы и покажу как настроить своё рабочее место по минимуму.
Для разработки на Java, как, впрочем, и на любом другом языке, нам потребуется IDE (Integrated Development Environment) – специализированное ПО для написания другого ПО. На самом деле это просто Блокнот на стероидах, с прикрученным к нему компилятором и ещё парочкой фич. Лично я пользуюсь Intellij idea от Jet Brains. К слову, именно на её основе и построена Android Studio – IDE для разработки под (ВНЕЗАПНО) андроид.
Заходим на сайт и качаем community edition – она бесплатна.
Скачать
Далее идём на сайт Oracle и качаем JDK SE – Java Developer Kit Standard Edition
Скачать
Сама установка ничего особенного из себя не представляет – классическое next next next… Для пользователей Windows, после установки JDK, нужно будет прописать путь до него в PATH – файле, ну а макаводы (коим и я являюсь) могут двигаться дальше.
Первое приложение
По классике жанра это должно быть “Hello World”. Запускаем IDE и видим окошко с предложением импортировать настройки от предыдущей IDE, но мы установили её впервые, так что отказываемся. В окошке выбора проекта клацаем на “Create new project” , в верхнем спиннере (да, это тоже спиннер) выбираем наш JDK (если его нет, то там же можно ручками указать путь до него) и жмём Next до тех пор, пока не появится окошко с полем для ввода имени проекта. Стоит сразу сказать, что есть разные правила для именования тех или иных частей программ. Имя проекта обычно пишутся так называемым CamelCase – слитно, начиная каждое слово с большой буквы. При чём здесь верблюд? Заглавные буквы похожи на горбы верблюда :D Нажимаем создать и видим основной интерфейс нашей IDE. Слева нажимаем на вкладку Project и видим дерево проекта. Нажимаем правой кнопкой на папку “src” и выбираем пункт New -> Java Class. Назовём класс “Main”.
Код класса Main
public class Main {
public static void main (String[] args){
System.out.println(“Hello World”);
}
}
Пока просто скопируйте код, нажмите правой клавишей на файле Main и выберите Run.
В консоли появится заветное Hello World.
Перед тем как рассказать, что же за магию такую я использовал, стоит немного отойти от частного к общему, и рассказать про структуру программ как таковых. Если вкратце, то программа – это алгоритм для манипуляции данными. Отсюда следует, что весь программный код можно условно разделить на две части – данные и алгоритмы ими управляющие. В качестве данных выступают переменные, константы и массивы. В качестве алгоритмов – операторы. Собственно программы как конструктор Lego – каждая программа состоит из одних и тех же компонентов, однако их компоновка и отличает одно приложение от другого.
Переменная – не углубляясь в устройство компилятора и компьютера в целом, переменная представляет из себя значение определенного типа, например целое число или букву.
Разница между переменной и константой в том, что в одну переменную в разных частях программы мы можем класть разные значения, то есть изменять ее значение. Константа же такой функциональности не имеет, и, будучи инициализированной значением при своем создании, не может менять это значение на протяжении всей программы.
Массив – набор переменных ОДНОГО типа.
С данными покончили, но что там на счёт операторов?
Оператор – кусочек алгоритма. Некоторые могут принимать на вход данные, некоторые – нет. Например, оператор if имеет тело, некий программный код, описываемый самим программистом, и принимает на вход логическое условие, при выполнении которого исполняется код из тела этого if.
ЕСЛИ верно УСЛОВИЕ совершить ДЕЙСТВИЕ
if (условие) {
действие
}
С операторами и переменными мы более детально познакомимся в следующей статье (если вам это вообще зайдет).
Для того, чтобы ОС поняла, откуда стоит начать выполнение программы придумали такую вещь как точка входа – некая стандартная функция, с которой всегда начинается выполнение кода. В Java это метод public static void main (String[] args).
Осталось только понять, что означает System.out.println(“Hello World”);
Вкратце, это метод – некий фрагмент кода, выполняющий определенные действия с данными, которые мы ему даем. В данном случае он выводит данные в консоль в виде текста. В дальнейшем мы будем писать собственные методы и классы, которые их содержат.
ООП
До недавнего времени существовало две основные парадигмы, подхода к разработке приложений.
Первый, и самый старый (ну почти) – функциональный подход, представляет из себя код в виде набора функций (для вас, пока что функция = метод) , среди которых есть и функция main, та самая точка входа, а также остальные функции, которые вызываются из main.
Второй, ныне самый популярный – объектно – ориентированный подход (ООП), вводит в программный код понятие класса. Теперь программа представляет собой набор классов и их взаимодействий посредством методов. Собственно, в этом и кроется различие между методом и классом – метод есть часть класса, в то время как функция самостоятельна.
ООП исходит из того что программа призвана решать определенную проблему, автоматизировать процесс реального мира, а значит программа есть выборочная модель реального мира (выборочная, потому что вы берете только те свойства
реальных объектов, которые необходимы для решения задачи).
Осмотритесь вокруг, что вы видите вокруг? Объекты! Стол, стул, телевизор и т.д.
Так вот, класс это описание свойств определенного типа объектов, например вы можете создать класс “Стол”, а в его свойствах (принято говорить полях) опишите то, что свойственно столу в рамках решения вашей задачи, например количество ножек, материал и цвет. Однако класс сам по себе не может исполняться в программе, для этого нужно создать экземпляр класса – объект. Именно объекты класса содержатся в оперативной памяти во время исполнения программы (справедливости ради стоит отметить, что класс сам по себе тоже содержится в особой области java – машины, но пока не стоит забивать этим голову).
Запутались? Не беда! По-началу всегда проще усваивать знания на примерах.
Представьте себе завод по производству денежных купюр. Так вот, класс, это болванка, некий шаблон, по которому и печатаются купюры – объекты этого класса. То есть класс, это описание того, каким должен быть объект определенного типа, а сам объект это …объект? В дальнейшем мы еще не раз вернемся к этой теме и разберем ее более подробно на конкретном коде.
З.Ы.
Т.к. я впервые пишу что то публично, то адекватный фидбэк мне просто необходим. Для тех, кто напишет что “Слишком разжевано” – это статья не для начинающих программистов, а для тех, кто вообще не знаком с индустрией. Если наберётся хотя бы 10 человек, кому мой материал покажется интересным, то продолжу писать. Ещё пару уроков мы будем разбираться с программированием в целом, а затем уже займёмся непосредственно Android – разработкой.
Stay tuned
Продолжай и почаще пиши, молодчина. Ждём следующий выпуск.
P.S.: С картинками действительно было бы здорово!
Стаття — класна! Продовжуй, але добав картинок)
Очень интересно и познавательно, жду продолжения!
По-моему здесь много о джаве и мало об Android. Если кто-то желает писать под андроид, то разобраться с Java стоило бы отдельно (рекомендую Sololearn для такого, там языки учатся способом решения сотни мелких задачек). А в таких статьях хотелось бы видеть специфику разработки под Android (Activity, Fragments, Layouts и прочее). Именно в таких понятиях у человека, знающего Java, разбегаются глаза при первом запуске IDE)
В любом случае было интересно почитать статью, интересно бы глянуть продолжение:)
Эх, сейчас бы путать функциональный и процедурный подходы
Ну что, нормас, только картинок не хватает :)
а в плане разжевать, так это только +
Сейчас понял, что стоило вкинуть картиночек каких-нибудь.
визуализировать твою инструкцию, у меня тоже у первого блога была беда с картинками)
Из программирования – слышала краем уха в универе делфи паскаль. Самостоятельно начала изучать джаву. много инфы, в голове каша. После прочтения Вашей статьи некоторые пробелы начали восполнятся. С нетерпением жду продолжения. Спасибо!
и судя по синтаксису для простого Hello World, питон явно проще и начинать все же стоит с него(личное мнение)
Тут трудно сказать. Пайтон прост. Да. Но если начинать учить с него, в будущем будет не мало проблем с переходом на более низкоуровневый язык, типа той же Джавой, или тем более С++. Не просто потому, что нужно расширять знания для чего-то продвинутого, а расширять фундаментальные знания и осваивать такие привычки, как описывать тип данных и т.д., так как Пайтон такие вещи просто игнорит. Вместе с тем Пайтон “для людей”, много умеет, много где используется для скриптов под проф. софт, верный выбор для data science, machine learning и так далее. Его бы в школах давать, чтобы школьники хотя бы понимали философию, а не просто как кодить. Для этого он прекрасен.
раз я школьник, то все прекрасно?) Ну питон начал для общей концепции, после него Java(если успею) и уже в универе какую-никакую базу с++ планирую получить
Дап) Прекрасно
Я починав із с++, після неї всі мови даються легко) Рекомендую для повного початківця саме c++.
Ждал этого материала с упоминания в Q/A , мне будет очень интересно, так как после Питона(для понимания основ) хочу на Джаву)