Когда речь заходит о разработке приложений для Android, большинство программистов первым делом вспоминают язык Kotlin. С 2019 года компания Google называет его основным языком android-разработки. Всё было бы хорошо, но вот от языка Java никто отказываться не стал, и это породило путаницу среди программистов. Как бы руководство Google ни идеализировало молодой Kotlin, опросы Stack Overflow 2018 года показывают, что почти половина респондентов отдают предпочтение старому и проверенному Java. Kotlin в приоритете только у 5% разработчиков.
Мы сравнили два похожих языка — определили, чем Kotlin отличается от Java, чем Kotlin лучше Java, и какой язык стоит выбрать для android-разработки в 2022 году.
Почему Kotlin и Java популярны
Язык программирования Java занимает третье место в рейтинге наиболее популярных, по данным индекса TIOBE на август 2021 года. Он уступает только языку Python и C. В этом же рейтинге Kotlin занимает только 37 место. Это говорит о том, что большинство разработчиков не торопятся переходить с привычного Java на новый Kotlin.
Причины популярности Java. Язык Java создали в компании Sun Microsystems в начале 90-х годов прошлого столетия. Этот язык появился в ответ на потребность в платформенной независимости. Java стал языком общего назначения, на котором можно писать программы под любые устройства: ПК, бытовую технику и мобильные устройства. Эта особенность языка, наряду с простотой синтаксиса и сильной типизацией почти сразу покорила сердца множества программистов. Сегодня большинство корпоративных проектов и веб-сайтов пишутся не без помощи Java, а аудитория языка насчитывает более 10 млн программистов.
Перспективы Kotlin. Kotlin — это ещё совсем молодой язык, родившийся в российской компании JetBrains в 2011 году. Как Java, C++ и C, Kotlin — статически типизированный язык. Это позволяет ему проверять типы данных в программе во время компиляции, и своевременно выявлять ошибки. То есть если компилятор замечает нарушение правил языка, то программа просто не выполняется. Но главная особенность Kotlin в том, что язык полностью совместим с Java, что позволяет не переписывать имеющиеся приложения. Именно это и покорило программистов в Google.
Разработчики Google наблюдали за ростом языка несколько последних лет и считают его более лаконичным. По их мнению, он открывает больше возможностей, чем Java, а программный код в нём получается на 40% короче, чем в других языках
Java создали с целью сменить язык C++, но и он вскоре показался разработчикам весьма строгим и консервативным. Kotlin — это бунт против устоявшихся правил, простота, свобода и безопасность.
Где используется Java
Так как Java — язык общего назначения, то его применение можно найти везде — от веб-сайтов до роботизированной медицины. Остановимся на сферах его применения подробнее.
- Android-разработка. Java долгое время активно пропагандировался всё той же компанией Google, как самый удобный и производительный язык для программирования под Android. Поэтому большинство приложений для этой операционной системы написаны именно на этом языке.
- Облачные проекты. На глобальном рынке IT отмечается стремительная миграция в облачные хранилища. Переносится всё — от данных компании до целых сервисов. Данные опроса IT-специалистов от Cloud Foundry Foundation показали, что 58% специалистов для разработки облачных корпоративных приложений и сервисов используют именно Java.
- Виртуальная реальность. Виртуальная и дополненная реальность — направления, которые стремительно набирают обороты в последние десять лет. Java — один из языков, на которых пишут множество VR/AR приложений.
- Сфера больших данных. Несмотря на то, что при работе с большими данными более популярны языки Python и R, но здесь находится применение и для Java. У языка даже есть ряд библиотек и фреймворков, специально созданных для работы с Big Data. Основные из них: Java Machine Learning Library, Weka и JSAT.
- Беспилотные автомобили. Беспилотные автомобили — современный тренд. Это красиво, безопасно и удобно. Но чтобы создать действительно безопасный автомобиль, приходится потрудиться над множеством мельчайших деталей. Важно, чтобы программа определяла тип объекта, расстояние до него и его состояние. И язык Java в разработке используется как один из основных.
- Космическая индустрия. NASA — одна из космических компаний, которая использует в своих разработках Java. На нём создана программа World Wind, которая позволяет приблизить любой участок Земли и детально его рассмотреть.
Это далеко не все области применения языка — их намного больше. Это значит, что вооружившись Java, можно разработать любые полезные приложения.
Где используется Kotlin
Kotlin используется для написания мультиплатформенных программ, в мобильной, веб и бэкенд-разработке.
- Веб-разработка. Язык предусматривает компиляцию с JavaScript и инструменты для работы с HTML и CSS. В работе вы можете использовать не только инструменты самого языка, но и библиотеки для JavaScript.
- Бэкенд-разработка. Для бэкенд-разработки предусмотрена компиляция Kotlin с Java, хотя языки совместимы и по отдельности. Но как показывают опросы и исследования, мало разработчиков пишут бэкенд приложений на Kotlin — в этом вопросе большинству привычнее Java.
- Кроссплатформенная разработка. Оказалось, Kotlin — это не только про Android. Kotlin multiplatform — это набор инструментов, который позволяет писать общий код, и компилировать его с байт-кодом для android или IOS. Можно также подключить этот код как библиотеку к нативным приложениям.
- Десктопная разработка. Воспользовавшись любым UI-фреймворком, вроде Swing, вы можете создавать десктопные приложения. Также у самого языка есть фреймворки для десктопной разработки. Один из популярных — TornadoFX.
Google, Netflix и Twitter уже переводят часть своих проектов на Kotlin, ведь, как говорит архитектор языка Андрей Бреслав, «Язык программирования — рабочий инструмент. Если никогда их не менять, можно отстать от жизни».
Kotlin vs Java
Чтобы разобраться, чем Kotlin отличается от Java, сравним их по нескольким критериям: возраст языка, количество кода, проверяемые исключения, безопасность, среда разработки и цели разработки.
Язык | Kotlin | Java |
Возраст языка | Kotlin появился в 2011 году, и молодость языка в этом случае не играет ему на руку. Чтобы найти ответ на какой-то вопрос или решение задачи, придётся потратить немало времени. Даже документация здесь не сильно поможет. В большинстве случаев она сводится к тому, что задачи решаются похоже с Java, но с небольшими изменениями | Язык появился в 1995 году. За это время вокруг него сформировалось большое комьюнити, и это позволяет без проблем найти ответ на вопрос, даже очень специфичный. Вы можете почитать документацию, посмотреть видеоролик или обратиться к другим разработчикам — с вероятностью 99% ответ будет найден |
Количество кода | Чтобы написать на Kotlin такую же программу, как на Java, у вас уйдёт меньше времени и строк кода. Это очень удобно, когда требуется создать проект в короткие сроки | Особенности синтаксиса Java предполагают, что код будет более громоздким, чем в Kotlin. Вдобавок язык крайне консервативен, поэтому важно следить за мелкими деталями |
Проверяемые исключения | В языке не предусмотрены условия для проверяемых исключений, а значит нет необходимости объявлять какие-либо исключения. Код сокращается — безопасность повышается | Проверяемые исключения — головная боль Java-программистов. Компилятор заставляет каждый привлекающий внимание метод обозначать как исключение. Разработчик вынужден обрабатывать его, а это сказывается на скорости разработки |
Безопасность | В Kotlin по умолчанию встроена null-безопасность поэтому если программист решит присвоить чему-то значение null — во время компиляции просто произойдёт сбой. Для разработчиков null-безопасность языка позволяет не писать дополнительный код, что является очередным преимуществом языка перед Java | Ещё одна проблема Java-разработчиков связана с так называемой «нулевой безопасностью» или исключением NullPointerExceptions. В Android используется null для представления отсутствия значений, но эта же ситуация может попросту уничтожить программу |
Среда разработки | Android Studio базируется на программе Intellij Idea, которая создана и поддерживается той же компанией, что и Kotlin — Jetbrains. Поэтому Kotlin-разработчики получают актуальную IDE, которая покрывает все их запросы | При разработке приложений под Android в Java используется специализированная среда разработки IDE — Android Studio. Она заточена под работу с Java, поэтому вы можете начинать писать строку, а IDE сама её закончит |
Цели разработки | Если вы хотите создать приложение с долгим сроком жизни, то оптимальным вариантом будет выбор Kotlin. Особенно если учитывать простоту разработки на нём и множество фишек, которых нет в Java | Большинство приложения для Android написаны на Java, и маловероятно, что кто-то решит переписать их на Kotlin. Также, когда дело касается инновационных решений, VR/AR-приложений или робомедицины |
Перспективы | Kotlin — молодой и бунтарский язык, который идёт вразрез с консервативными устоями предков. Он похож на подростка. Многие современные компании переходят на этот язык, но всё ещё неизвестно, что станет с ним завтра. Возможно, скоро он обгонит по популярности язык Java, а возможно — повторит судьбу мёртвого языка Perl | С развитием технологий универсальный Java точно не потеряет свою популярность. Он покоряет своей кроссплатформенностью и возможностью программировать на нём ПО для чего угодно — даже для будильника. Умирать в ближайшее время он не собирается точно, об этом говорит хотя бы его использование в космических разработках |
Kotlin — победитель противостояния в сфере android-разработки. Программисты получили язык, который ждали: современный, простой и прагматичный. Но если вы хотите заниматься чем-то большим, чем разработкой мобильных приложений — выбирайте Java.
Что учить: Java или Kotlin
Редкий kotlin-программист не знает Java. Считается, что знать язык Kotlin без него невозможно, потому что большинство решений и библиотек у молодого языка заимствованы из Java. Поэтому лучше учить оба языка, причём сначала Java, и только потом Kotlin. Большинство популярных библиотек поддерживают совместимость как с Kotlin, так и с Java, поэтому вы сможете использовать оба языка даже в рамках одного проекта.
Знание обоих языков даст вам преимущество в нише мобильной и веб-разработке. Освоив оба языка, вы станете востребованным разработчиком на рынке труда.
Сколько зарабатывают kotlin-разработчики
Согласно данным сайта zarplan, средняя зарплата kotlin-разработчика в России составляет 250 407 руб. в месяц. На сайте вакансий hh.ru зарплата таких специалистов варьируется от 100 000 до 450 000 руб. На основе обзора зарплат рассмотрим, как распределяется заработная плата между специалистами разных уровней от джуниора до тимлида.
Без опыта, джуниор | 42 000 ₽ |
С опытом от года, мидл | 100 000 ₽ |
Профессионал, синьор | 150 000 ₽ |
Руководитель команды, тимлид | 190 000 ₽ |
Сколько зарабатывают java-разработчики
По данным того же сайта zarplan, средняя зарплата java-разработчика по России составляет 245 369 руб в месяц. Сайт вакансий hh.ru показывает, что разброс зарплат составляет от 95 000 руб. до 485 000 руб. в месяц.
Без опыта, джуниор | 49 000 ₽ |
С опытом от года, мидл | 90 000 ₽ |
Профессионал, синьор | 143 000 ₽ |
Руководитель команды, тимлид | 148 000 ₽ |
Как изучать языки
Все языки программирования изучают примерно по одной и той же схеме. Вначале нужно изучить основы языка и синтаксис. После — знакомиться с библиотеками, фреймворками и углубляться в особенности языка. Далее — практика. Материалов по изучению довольно много, особенно если у языка большая экосистема, как у Java, и новичку довольно сложно определить, что изучать нужно, а что уже неактуально.
Изучение Java начинайте со следующих книг:
- «Изучаем Java», Кэти Сьерра, Берт Бейтс;
- «Java. Руководство для начинающих», Герберт Шилдт;
- «Java. Библиотека профессионала», Кей Хорстманн.
Популярные курсы по Java
На курсе «Java-разработчик» от Skillbox вы за 6 месяцев научитесь писать код на Java, работать с базами данных в MySQL, пользоваться Git, создавать веб-приложения и оптимизировать их код. В программе вас ждёт 25 тематических модулей 209 видеоуроков, практические задания и их разбор с преподавателем. В конце вы подготовите дипломный проект для реального клиента
Курс «Профессия Java-разработчик» от SkillFactory за 14 месяцев сделает из новичка в мире программирования уверенного java-специалиста. Cпустя семь месяцев вы достигнете уровня Junior и сможете выйти на рынок. С этим вам помогут специалисты карьерного центра. Остальные семь месяцев вы будете накапливать опыт и повышать свою квалификацию. В финале вы создадите индивидуальный проект по реализации собственного приложения
Изучения языка Kotlin начинайте со следующей литературой:
- «Head first kotlin», Дэвид Гриффитс, Дон Гриффитс;
- «Kotlin в действии», Дмитрий Жемеров;
- «Kotlin. Программирование для профессионалов», Джон Скин, Дэвид Гринхол.
Популярные курсы по Kotlin
Курс «Разработчик на Kotlin» от Нетологии рассчитан для начинающих и опытных android-разработчиков, которые хотят освоить ещё один инструмент для работы. На курсе вы научитесь разрабатывать на Kotlin проекты любой сложности, проектировать сервисы, строить архитектуру для них и управлять пользователями. Во время учёбы вы создадите полноценное android-приложение и серверную часть для него
На курсе «Профессия Мобильный разработчик» от Skillbox вы научитесь создавать мобильные приложения под Android и IOS, разрабатывать нативные приложения, настраивать клиент-серверную часть, верстать базовые UI-элементы, тестировать приложения и работать в команде. Каждому студенту помогают найти работу, составить портфолио и резюме
Подведём итоги
Сравнивая Java vs Kotlin, становится понятно, насколько это разные языки по техническим аспектам. Если вы планируете заниматься android-разработкой, то лучше учить оба языка — так у вас будет больше возможностей для реализации, а вы станете действительно востребованным специалистом.
Kotlin показывает себя лучше в быстроте и простоте написания кода, он более современный и нестрогий. Java, наоборот, — более строгий и консервативный язык, но открывает для разработчика возможности за пределами мобильной разработки. Лучше всего не тратить время на обдумывание, какой язык выбрать, и учить их в связке «Java — Kotlin».
5 комментариев
И скажите пожалуйста Java и Kotlin связанны?
Спасибо вам огромное. Приятно было прочитать и узнать больше о Kotlin и Java. Вы очень помогли мне а можете рассказать какого первым учить а то все скажуть что если начать с Java то Kotlin будет легче выучить и быстрее. Но если с перва выучить Kotlin то будеть легче выучить библиотеки Java но меня нитересует больше Java а то я думаю если даже сложно выучить Java то потом Kotlin очень легче будет. Расскажите пожалуйста или посоветуйте чего нибудь мне будет приятно
kotlin это по сути синтаксический сахар. Он компилируется в байткод как и java. Вам лучше изучить сначала java, а потом уже переходить к kotlin, так как в java почти всё прозрачно и на поверхности, а в kotlin некоторые моменты скрыты под капотом и для новичка это будет выглядеть как какая-то магия. Но если уже есть опыт работы с java, то в kotlin нет ничего необычного. Просто синтаксис более лаконичный. В любом случае это вкусовщина, кому что нравится.
Спасибо. Приятная статья. Мягко и по сути.
Добрый день!
А нам приятно получать обратную связь от вас) Успехов!