Битва титанов: Java vs Kotlin
Разберём, какой язык программирования подходит для новичков, опытных программистов и бизнеса — Kotlin или Java.
Один из старейших языков программирования Java и один из наиболее молодых Kotlin — активно используются для мобильной разработки. Но они также подходят для создания десктопных и серверных решений. Главный разработчик Группы «Иннотех» Владимир Полховцев сравнивает двух гигантов Android-разработки.
Владимир Полховцев
Главный разработчик Группы «Иннотех»
Java, по мнению Amazon, один из оптимальных по энергопотреблению и времени выполнения языков программирования. Он зарекомендовал себя для серверной разработки, на тех платформах, где может работать виртуальная машина. Не зря же его называют WORA (Write Once and Run Anywhere — «Напиши один раз, запускай где угодно»). Но кроме того, его применяют для разработки игр, облачных вычислений, больших данных, искусственного интеллекта и интернета вещей.
Кто же ему наступает на пятки и пробует выбить из основных сегментов? Изначальный клон Java под названием Kotlin. Авторы хотели улучшить типобезопасность по сравнению с прародителем и сделать язык более простым, чем Scala.
В мае 2017 года Google объявил, что язык программирования Kotlin теперь является предпочтительным языком для разработчиков приложений для Android. Это стало признанием отрасли.
Google оценивает, что 70% из 1 000 лучших приложений в Play Store написаны на Kotlin. Также на нём сделаны Maps, Play, Drive. Однако этот язык программирования используют и для бэкенд-разработки, например, он доступен в Spring Framework.
Рассмотрим эти два популярных языка с разных аспектов для новичков, опытных программистов и бизнеса. Я приведу релевантные, на мой взгляд, факты и умозаключения, а лучшего предлагаю выбрать читателю.
Для новичков
Новичкам важны низкий порог вхождения в язык программирования, а также прощение ошибок из-за неопытности и общность технологической базы. Строгость языковых конструкций может сыграть в негативную сторону.
К примеру, новичку поставили задачу написать и backend server, и android-приложение, обращающееся к нему. Какие технологии для этой задачи необходимо будет изучить, чтобы выполнить задачу на Java и Kotlin?! На Java и Kotlin необходимо знать сам язык, принципы Rest взаимодействия, Android-платформу.
Минимальные специфичные для Java технологии, которые будут отличаться от Kotlin, — Spring Boot, Retrofit. Чтобы то же самое сделать на Kotlin, нужно изучить только фреймворк Ktor в дополнение к общему стеку.
Kotlin
+ официальный язык для Android;
+ кросс-платформенность: можно писать backend-, Android-, iOS- и веб-приложения, создавать IoT-решения;
+ де-факто стандарт разработки и в нём много синтаксического «сахара»;
+ более лаконичен и малословен, что позитивно влияет на читабельность;
+ более консистентен при построении межплатформенного взаимодействия.
Java
+ кросс-платформенность: мобильные и серверные приложения, работа с AI и IoT;
− не прощает ошибок: забыл запятую, и всё посыпалось.
Для опытных разработчиков
Опытные программисты смотрят на скорость выполнения кода, возможности синтаксиса и актуальность версий. Чем чаще обновляются версии, тем быстрее исправляются баги и добавляется новая функциональность. А значит, язык развивается и соответствует современным требованиям.
Например, разработчикам передали макеты приложения в Figma. Им нужно создать подходящий код, чтобы дизайн превратился в полноценный продукт. Для ускорения и упрощения разработки нужно выбирать наиболее безопасный и быстрый в плане компиляции язык.
Kotlin
+ совместимость с Java;
− считается молодым языком программирования с «детскими» болячками.
Java
− анализ 2016 года давал преимущество Java над Kotlin в 12–15% для чистых сборок. В текущем году анализ говорит, что быстродействие сопоставимо;
− требует больше памяти.
Для бизнес-процессов
Для бизнеса важна скорость разработки и внедрения создаваемых решений. Кроме того, приоритетно экономить бюджет на поддержке. Чем меньше строк кода нужно писать, тем быстрее будет закончен проект. Кроме того, требуется универсальность языка, чтобы разработчик мог писать как серверные, так и мобильные или десктопные приложения.
Например, для каждой страны должны быть создана собственная версия приложения с учётом особенностей законодательной базы. При этом запустить продукт нужно одновременно на всех рынках в короткие сроки. Должно быть достаточно команд разработки и тестирования, а также возможность быстро обучить новых ИТ-специалистов для локальных офисов.
Kotlin
+ возможность автоматической конвертации в Java и обратно;
+ классная поддержка языковых в фич в IDE экосистемы JetBrains;
− более 3 600 соискателей в Москве;
− мало литературы и обучающих курсов.
Java
+ более 42 400 соискателей в Москве;
− платная коммерческая лицензия начиная с 11 версии.
Java vs Kotlin: что выбрать в 2023 году
Когда речь заходит о разработке приложений для 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 — это бунт против устоявшихся правил, простота, свобода и безопасность.
Ежедневные советы от диджитал-наставника Checkroi прямо в твоем телеграме!
Подписывайся на канал
Подписаться
Где используется 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».
Kotlin
Kotlin — это язык программирования, созданный компанией JetBrains. С момента выхода первой официальной версии языка в 2016 году, всего за год он занял место в топ-50 в рейтинге TIOBE (индекс, оценивающий популярность языков программирования на основе подсчета результатов поисковых запросов, содержащих название языка) и не сдает позиций.

Освойте профессию «Android-разработчик»
Kotlin — это статически типизированный язык программирования (тип переменной известен во время компиляции, то есть еще до запуска программы).
В отличие от Java, где программы строятся на классах, основным строительным блоком программы на Kotlin является функция. Однако Kotlin также поддерживает объектно-ориентированный подход к программированию.

16 месяцев
Android-разработчик
Запускайте приложения и игры для Android

Для чего применяется язык программирования Kotlin?
Область применения Kotlin широкая:
- мобильные приложения для Android и iOS, в том числе кроссплатформенные;
- веб-приложения (причем как серверная часть, так и интерфейс);
- десктопные приложения;
- программы для обработки больших данных.
Сегодня в основном он применяется для разработки Android-приложений. В 2017 году Kotlin получил официальную поддержку Google, а уже в 2019 году Google объявил Kotlin приоритетным языком для разработки приложений под Android.
Синтаксис
По мнению создателей Kotlin, Java накопила много неудачных решений за годы существования. Поэтому в новом языке они постарались учесть все недочеты Java и других языков программирования и сделать синтаксис языка лаконичным и удобным. Для разработчиков это значит, что код на Kotlin проще читается. В некоторых случаях он может быть на десятки строк короче, чем, например, в Java.

Станьте Android-разработчиком — работайте в штате, на фрилансе или запускайте собственные приложения
Главная точка входа
Так же как и в Java, в Kotlin точкой входа в программу является функция main().
fun main() val name = «SkillFactory»
println(«Hello, $name!»)
>
Преимущества
Kotlin полностью совместим с Java. Это значит, что можно вызывать функции, объявленные в Java-коде, прямо из кода Kotlin и наоборот, и в том числе пользоваться большим количеством уже существующих библиотек на Java.
В программе на Kotlin можно использовать любые Java-фреймворки. А еще Kotlin можно интегрировать с системами сборки, такими как Maven и Gradle.
Лаконичность. Это один из основных факторов, из-за которых все больше разработчиков выбирает именно Kotlin.
Kotlin null-безопасен. Создатели языка сделали всё, чтобы NullPointerException остались в прошлом. Это одни из самых часто встречающихся исключений, и их почти невозможно отследить во время компиляции. А это значит, что ошибки будут возникать только во время работы программы.
NullPointerException возникает в случае, когда переменная, к которой пытается получить доступ программа, равна null. Поэтому в Kotlin переменной по умолчанию нельзя присвоить null, только если это не указано явно. Например, код ниже не скомпилируется, потому что отсутствует «?» после типа переменной:
val name: String = null
Чтобы переменная name могла быть null, нужно указать это явно с помощью знака «?»:
val name: String? = null
В коде ниже функция hashCode() не будет вызвана, так как переменная name в момент вызова функции равна null.
val name: String? = null
name?.hashCode()
Функции-расширения. Kotlin позволяет изменить функционал существующих классов без наследования классов. Это удобный инструмент, который позволяет повысить читаемость кода. Для объявления extension функции к ее имени нужно добавить префикс в виде расширяемого типа, например:
fun String.addGreeting(): Stringreturn “Hello “ + this
>
Тогда вызов такой функции может выглядеть так:
val name = “SkillFactory”
println(name.addGreeting())
Kotlin имеет открытый исходный код. Код Kotlin открыт для программистов, и его внедрение в проект тоже бесплатно. Открытый исходный код упрощает поиск проблем. Разработчики Kotlin прислушиваются к сторонним разработчикам и вносят правки, предлагаемые сообществом.
Легко учить. Многие отмечают, что Kotlin прост в изучении и подойдет как язык программирования для начинающих.
Недостатки
Скорость компиляции. Часто возникают проблемы со скоростью компиляции кода. Это не постоянное явление, иногда компиляция происходит даже быстрее, чем кода на Java, но такие моменты расстраивают разработчиков.
Малое количество туториалов. Сообщество разработчиков на языке программирования Kotlin еще молодое и статей по разработке не так много, особенно для «чайников». Вот несколько полезных материалов на русском языке для начинающих.
- Видеоуроки по Kotlin для начинающих от Devcolibri.
- Руководство по Kotlin.
Небольшое количество библиотек на Kotlin. Причина та же — язык еще довольно молодой. Но этот недостаток компенсируется полной совместимостью с Java — можно использовать большое количество уже существующих Java-библиотек.
Перспективы
Сейчас Kotlin официально является основным языком для разработки Android-приложений, а значит, в ближайшие несколько лет Android-разработчикам так или иначе предстоит с ним работать.
С Kotlin начинают работать и крупные компании — Uber, Netflix, Pinterest, Coursera, — поэтому в ближайшем будущем, возможно, Kotlin станет более широко использоваться и в веб-, и десктопных приложениях.
Android-разработчик
Освойте программирование на Java и Kotlin, мобильную разработку и UX/UI, разработайте свое приложение для Android. Центр карьеры поможет с резюме и подготовкой к собеседованию. Программа подойдет для новичков

Статьи по теме:
Достоинства, недостатки и конкуренты популярного языка программирования
Делимся ресурсами для поиска и подборкой возможностей для студентов в IT, которыми можно воспользоваться прямо сейчас
Что такое Kotlin и с чем его едят: обучающее руководство и сравнение нового языка Android-разработки с Java
Рассказываем о языке Kotlin, созданном российской компанией JetBrains и недавно выбранном Google в качества основного языка Android, и делимся руководством.
Kotlin — это относительно молодой язык от российской компании JetBrains. Появился он в 2011 году. На конференции Google I/O 2017 команда разработчиков Android сообщила, что Kotlin получил официальную поддержку для разработки Android-приложений.
Как и Java, C и C++, Kotlin — это статически типизированный язык. Он поддерживает как объектно-ориентированное, так и процедурное программирование. По аналогии с вышеупомянутыми языками, основной код Kotlin-программы пишется в функции main , которой передаётся массив аргументов командной строки:
// необязательный заголовочный файл пакета package hello fun main(args: Array < String >) < val scope = "world" println("Hello, $scope!") //точки с запятыми необязательны >
Вот основные возможности и преимущества Kotlin:
- компилируется в байткод JVM или в JavaScript;
- программы могут использовать все существующие Java-фреймворки и библиотеки. Kotlin можно интегрировать с Maven, Gradle и другими системами сборки;
- язык очень прост для изучения;
- исходный код открыт;
- в IntelliJ доступна автоматическая конвертация Java-кода в Kotlin и наоборот;
- язык null-безопасен — надоедливые NullPointerException остались в Java. Вот пример кода:val name: String = null // попытка присвоить null, не скомпилируется.fun getName() : String = null // попытка вернуть null, не скомпилируется.
- легко читаемый синтаксис не составит проблем при code review.
Разберём некоторые из них поподробнее.
Null-безопасность
При попытке присваивания или возвращения null код не скомпилируется. Тем не менее, в языке есть поддержка Nullable-типов. Задать такую переменную или функцию можно, приписав ? к названию типа:
val name: String? = null // присваивается null, код компилируется. fun getName() : String? = null // возвращается null, код компилируется.
/* неверно */ val name: String? = null val len = name.length /* верно */ val name: String? = null val len = name?.length
Гибкость и простота синтаксиса
Простые функции и структуры можно объявить одной строкой. Геттеры и сеттеры задаются за кулисами для интероперабельности с Java-кодом. Добавление data-аннотации к классу активирует автоматическую генерацию различных шаблонов.
Рассмотрим следующий пример:
/* Программа на Java */ public class Address < private String street; private int streetNumber; private String postCode; private String city; private Country country; public Address(String street, int streetNumber, String postCode, String city, Country country) < this.street = street; this.streetNumber = streetNumber; this.postCode = postCode; this.city = city; this.country = country; >@Override public boolean equals(Object o) < if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Address address = (Address) o; if (streetNumber != address.streetNumber) return false; if (!street.equals(address.street)) return false; if (!postCode.equals(address.postCode)) return false; if (!city.equals(address.city)) return false; return country == address.country; >@Override public int hashCode() < int result = street.hashCode(); result = 31 * result + streetNumber; result = 31 * result + postCode.hashCode(); result = 31 * result + city.hashCode(); result = 31 * result + (country != null ? country.hashCode() : 0); return result; >@Override public String toString() < return "Address