Вчера у меня окончательно сформировалось твёрдое желание подтянуться в Android-разработке до уровня средненького джуна. Опыт в Java практически 0. Под андройд за последние 6 лет с перерывом в пару лет писал 3 раза, на коленке и вещи далёкие от коммерции, паттернов и т.д. Первым опытом была кривоватая поделка с OpenCV и SQLLite. Последними - UI для бинарника работающего с аппаратной частью смартфона. В тонкости языка не погружался, книжек не читал, но за счёт имеющейся базы по С++, 1000-1500 строчек собственноручного Java-быдлокода накидывал без проблем. В последний год краем глаза слежу за основными тенденциями, в результате чего сформировалось естественно-дилетантское мнение "Java это прошлое мобильной разработки, а Kotlin её светлое будущее". Вчера вбил в гугл "kotlin c чего начать?" и обнаружил, что начинать внезапно все равно надо с Java. Смутило два момента. 1) На тостере поиск вывалил темы с от года и старше, а это в наше время срок досточно большой для изменений. 2) Если отбросить спорный довод, что "Kotlin почти не отличается от Java", в качесте оснований для изучения Java указываются вещи в моём понимании не очень вяжущиеся с позицией Junior Android Developer - знание тонкостей работы JVM, отсутствие у Kotlin собственных библиотек. Про jvm ничего сказать не могу. А вот бибилиотеки как повод для изучения Java смущают. Пробежался по верхам по основным требованиям в вакансиях junior - чаще всего стречаются вещи сугубо прикладные, типа Gson или Retrofit, для использования которых знание тонкостей работы собственно Java не нужно. Конечно здорово знать основы, изучая С++ (который в свою очередь максимально облегчил мне вхождение в Python) ни разу не пожалел, что начинал с С, но времени с каждым годом всё меньше и меньше во всех смыслах. Сейчас весна 2019, не получится ли так, что потратив год на погружение в Java, к лету 2020 я обнаружу, что основной стек Android-программирования на Kotlin на уровне требований к джунам в фундаментальных знаниях Java уже практически не нуждается?
Тут дело скорее не в Java как таковой, а в том, что это JVM, соответственно, надо хотя бы в общих чертах представлять, как оно работает, что такое GC, где могут использоваться strong/weak references и т.д. Я пока не встречал книг или статей по котлину для начинающих, где объяснялись бы эти вещи (как раз потому, что они работают так же, как и в Java).
Поэтому какой-нибудь Hello World под андроид можно написать совсем без знания Java, но для чего-то чуть более сложного надо знать основы.
Я пару месяцев назад прошёл два курса по Python на степике и прочитал одну средней толщины книжку. Теперь наверное имею основание заявлять, что я знаю основы питона. Пары аналогичных курсов по Java будет досточно чтобы браться за Kotlin?
atoro, я бы сказал, что да. Учитывая то, что сейчас актуальна Java 12, а Андроид даже 8 версию не полностью поддерживает, необязательно даже самые свежие курсы для этого брать. Мои знания Java так и остались где-то на уровне 7-8 версии, и жить это не мешает :)
Да не особо знание java то и нужно, достаточно уметь читать java код. Особенно если есть опыт разработки хоть на чем то и C подобные языки знакомы. А уж работу ART, что куда компилится и как исполняется, GC и т.п., можно и по аналогии с прошлым опытом разобрать + статьи, книги, подкасты. Тем более не стоит цели сразу засеньерится или даже до мидла вкурить.
Короче работу jvm рантайма, байткод, вот это все разбирать конечно придется, но я лично не вижу смысла погружаться в тонкости java именно как ЯП. Ну разве что какая нибудь книжка по конкаренси в жава как мне кажется может быть полезной.