Как я начал изучать Java и Android
23-06-2018Время чтения ~ 7 мин.Java 7889
Видимо на Солнце были сильные вспышки, а может летняя жара так подействовала, но что-то меня дёрнуло поизучать программирование под Андроид. А там где Андроид, то там и Ява. Ну а почему бы и нет? — решил я, тем более что программированием я занимаюсь почти всю жизнь, а новый язык — дело наживное. Я неоднократно встречал утверждение, что Java — это только второй язык программирования, к нему следует приступать, когда в багаже знаний уже есть другие языки. И, забегая вперёд, скажу, что это очень верное замечание, поскольку программировать на Яве (или Джаве?) можно не только понимая основные принципы ООП, но и уметь принимать все явовские «отклонения» от того, к чему мы мы привыкли.
Лично я не понимаю как вообще можно изучать Яву в качестве первого языка программирования, поскольку первая программа «Hellо, World!» приводится лишь на 80-й странице описания. :-)
Впрочем это уже из другой истории, в своих заметках я привожу лишь забавные «нестыковки» и всё то, с чем мне прийдется столкнуться при изучении Java. Поскольку я сейчас в роли «зелёного» новичка, то читая эти строки через месяц или год, сам буду удивляться какой был «баран». :-) Пусть это будет просто забавным чтивом без каких-либо претензий на истину. ;-)
Среда разработки (IDE — Integrated development environment)
Вообще первая мысль — изучение только Андроида. То есть я предполагал, что есть какая-та среда визуальной разработки, вроде Delphi, где можно нарисовать/разместить кнопки, метки и прочие элементы, после их запрограммировать, например обработка события нажатия на кнопку (onClick). Если вы когда-нибудь программировали в Delphi, Visual Studio или в Lazarus, то прекрасно понимаете о чем речь.
Как выяснилось, действительно, фирма Google предлагает среду разработки Android Studio, где декларируется и визуальный построитель, и редактор кода, и компилятор и прочие плюшки. Но, уже на этом этапе я столкнулся с проблемой: половина статей по Андроиду рассчитана на другую среду разработки Eclipce, которая когда-то раньше была для гугла основной. Другая (почти) половина указывала на Intelij IDEA, которая и была переделана под Android Studio. Встречаются и другие экзотические IDE, вроде NetBeans, но по сути это всё обычные текстовые редакторы, мало отличающиеся от привычного Notepad++.
Поскольку Android Studio «весит» немало, то естественным желанием было бы использовать какую-то более легковестную IDE, но все статьи по Intelij IDEA и Eclipce можно назвать уже «устаревшими». На текущий момент единственным вариантом для разработки Андроид-приложений будет только Android Studio.
Установка Android Studio
Инструкцию по установке программы вы самостоятельно найдёте, благо их миллион и маленькая тележка, а я лишь отмечу несколько моментов, с которыми пришлось столкнуться.
Первая проблема — большой объём загрузочных файлов. Сама студия весит относительно немного (854Мб), хотя для мобильного Интернета это немало. Но это ещё не всё. После/в процессе установки программа подгружает ещё несколько больших файлов. Хуже всего то, что Android Studio не в курсе, что такое докачка файлов при разрыве соединения... Ситуацию исправило бы если можно было бы указать локальный файл для установки (скачанный через менеджер загрузки вроде Download Master), но нет, только самостоятельная закачка, только хардкор.
В итоге на трафик ушло где-то 2Гб и столько же места на диске. Помимо самой Android Studio нужно ещё установить Android SDK (предполагается, что Java SDK уже установлен — с этим проблем нет) и еще какие-то неизвестные науке файлы.
В общем худо-бедно, за несколько часов студия поставлена, вроде как можно программировать.
Первая программа
Первая программа, естественно, через copy/paste из любого обучающего сайта. Всё пошагово, как в инструкции, жмём запуск — программа не компилируется, вываливается какая-то ошибка.
Замечу, что это стандартная настройка IDE из «коробки».
Гугление ошибки показало, что она очень распространеная, а исправляется ручной правкой какого-то текстового файла. Оказывается что-то там в API поменялось, а здесь забыли внести изменения. Сейчас я уже и не вспомню что за файл, поскольку их слишком много, чтобы его найти.
В общем ошибка исчезла, пошёл запуск и выскочило окно выбора устройства.
Выбор устройства
Есть два варианта: первый использовать реальный смартфон/планшет в режиме разработчика, второй — программный эмулятор. Решаю выбрать эмулятор, но поскольку его ещё нет, то нужно его поставить. Жмем кнопки, выбираем рекомендуемое устройство, студия начинает загружать его архив. Опять квест с обрывами и отстутствием докачки файла...
На скачку уходит ещё час, ура! - начался прогресс установки. Опять же неспешный, но я замечаю, что на системном диске C катастрофично уменьшается свободное пространство. Из начальных 11Гб после установки студии осталось 7Гб с копейками, и оно уменьшается до 0. Windows жалобно пискнула: «что за хрень?», установщик же радостно сообщил, дескать места нет, всё сьел, мало, давай ещё.
Давай разбираться. Оказывается что скачивание архива происходит через temp-папку, которая на диске C. После этого распаковка происходит не в каталог студии (она на другом объемном диске), а в каталог пользователя, что тоже на диске C. Распаковка при этом работает через одно место с сохранением временных файлов в опять же в temp. В общем для установки эмулятора требуется где-то 8-10Гб, при том что сам он занимает раза в 3 меньше места.
Указать другой каталог для установщика невозможно, поэтому пришлось идти на хитрость: временно перенес temp-каталог на внешний диск. При этом опять же новая скачка, распаковка, и наконец-то установка.
Уже казалось, что победа близка, сейчас увижу в действии свою первую хелоу. «Ха» три раза!
Борьба с эмулятором
Запуск эмулятора продолжался минут 10, после чего он, опять же с радостью сообщил, что ему не хватает памяти. У меня семёрка 32 бит. Памяти 4Гб, из которых реально ОС видит примерно 3Гб. Если я закрою все программы и перегружу комп, то свободно 50-60% (1.5-1.8Гб), что в общем-то хватает для 99% задач.
Эмулятор же сказал, что ему требуется 1600Мб. При том, что сама студия отжирает примерно 700Мб, с учетом всех факторов ну никак не получается выделить запрашиваемые объёмы. Спрашивается — зачем ты вообще ставился — это сложно посчитать что ресурсов явно не хватит?
После попыток обмануть эмулятор через конфигурацию, я понял, что затея безнадёжная. Ну и очень сильно смутило, что загрузка эмулятора не просто медленная, а очень медленная. После гугления я узнал, что 10-20 минут на запуск — для него нормально.
Тогда я принял решение использовать реальное устройство (как оказалось — это и было самым правильным решением!). Тем более, что может быть проще — подсоединил usb-кабель, вошел в режим разработчика и наслаждайся своей программой. «Ха» опять три раза!
Что у тебя за телефон, чувак?
Для того, чтобы телефон подключился к ОС нужен драйвер. В общем логично. Но не для китайских noname. У меня некий iNome для которого я даже оф.сайт найти не смог. Гугл в помощь — какие-то левые сайты предлагают скачать/установить свои драйвера. Ставить что-то подобное — большой риск подхватить какую-нибудь гадость. Путем гугления выяснил, что есть универсальный драйвер «SCI-android-usb-driver», который поддерживает все подобные устройства. Скачиваю, проверяю через антивирусы — вроде чистый.
Устанавливаю драйвер, действительно отображается в списке устройств, подключаюсь, запускаю студию, вижу телефон, пуск, и ... УРА! Моя первая прога для Android запущена и даже работает!
На это у меня ушло «всего лишь» 7 часов борьбы. :-)
Немного про Android Studio
Первые попытки что-то делать в Android Studio сразу выявили её дичайшую тормознутость. Тормозит даже подсветка синтаксиса. Но, насколько я понял, это как-то связано с тем, что программа пытается в фоновом режиме сразу анализировать код и выдавать подсказки/замечания/ошибки и т.п. Визуальное построение программы даже и рядом не валяется с Delphi и подобными программами. Возможно есть какие-то сложности в реализации этой части и на ум приходит только старенький Borland Resource Workshop, где можно было создавать ресурсы. Это в общем-то из этой же области.
Ну и отдельно стоит отметить о-о-о-очень долгую сборку приложения. Сборщик Gradle мою программу собирает примерно 4-5 минут. То есть внес изменения в программе, нажимаешь запуск, ждешь 5 минут, видишь результат. Жесть, конечно...
Ява не Андроид? Андроид не Ява?
После copy/paste захотелось сделать что-то более осмысленное и тут первая сложность — синтаксис Явы вроде бы ясен, но не понятен. Плюс куча каких-то файлов и сложная структура каталогов. Разобраться с ходу не получилось, а бездумное программирование мне не по душе. Оказалось, что изучать Яву в Android Studio — занятие для мазохистов, поэтому я решил, что вначале осваиваемся с pure Java, после уже двигаемся к Андроиду.
И здесь возникли другие нюансы, начиная от процесса компиляции, до довольно забавном разночтении общепринятых понятий в Java с другими языками. Впрочем, это тема другой заметки. :-)
Можно ли понимать ваш интерес к теме разработки под Андройд как потерю интереса в нише разработки сайтов? Сайты всё?
Нет, конечно. Просто захотелось чего-то новенького. :)