Разработка приложений на Android: зачем нужен Kotlin, если есть Java?

There can be only one

Бывалые разработчики часто высказывают своё презрительное «Фи!» новым веяниям в среде девелопмента. И хотя основной хейт достается бесконечным JS-фреймворкам, этой же участи не избежал и Kotlin, с которым прожжённые джависты знаться не желали. А король-то, оказывается, был одетый: Kotlin без труда отвоевал свой кусок пирога на рынке мобильной разработке и вряд ли его доля будет снижаться в обозримом будущем. Поэтому сегодня мы попробуем поставить точку в извечном баттле: перейти на Kotlin vs остаться на Java

Классическая дилемма  — улучшать знания в текущем стеке или изучить новомодный фреймворк, который, возможно, скоро потеряет актуальность и будет не рентабелен. Этот же вопрос задают себе Java-программисты, которые разрабатывают приложения на Android. Стоит ли переходить на Kotlin? Насколько нужно знание Java для его изучения? Давайте разбираться вместе

Разработка приложений на Android: зачем нужен Kotlin, если есть Java?

Остаться на Java?

Java — официальный язык программирования, поддерживаемый IDE Android Studio, внутри которого встроен набор инструментов для разработки мобильных приложений Android SDK. Тотальное большинство существующих мобильных приложений для Android написано именно на Java с частичным использованием языка разметки XML (для вёрстки UI) и систем автоматической сборки (Gradle, Maven или Ant). При этом Java и Kotlin можно использовать в одном в проекте, благодаря компилятору последнего: он преобразует машинной код совместимый с Ява-машиной

Плюсы

Не нужно быть сеньором в разработке, чтобы это знать — Java один из основополагающих и ведущих языков программирования с крупнейшим комьюнити. Java легка в освоении и обладает достаточно высокой производительностью. Актуальность и популярность выливается в один огромный плюс — востребованность на рынке труда, множество вакансий, тысячи гайдов, десятки тысяч библиотек и куча готовых примеров (привет, Stackoverflow). Зная Java, перейти при необходимости на Kotlin не составит труда, тем более, что студии пока что всё равно требуют опыт Явы. Зная только Kotlin вы серьёзно сокращаете количество мест, в которые можете устроится (в коммерческой разработке для Android могут возникнуть задачи, где знание Java будет обязательно).

Минусы

Для тех, кто не особо дружит с ООП, Java может вызывать лютое жжение ниже спины: конструкторы классов, исключений, приводящих к падению приложения при отладке, не говоря уж о сбоях при непосредственно работе. Так же в dev-среде есть мнение, что Java морально устарела: отсутствие должной безопасности, не самого удобного синтаксиса и поддержки функционального программирования вперемешку с огромным пластом легаси кода в проектах сильно снижают интерес к этому языку со стороны новой волны разработчиков. Количество компаний, требующих именно Kotlin растёт день ото дня

Перейти на Kotlin?

Разработка приложений на Android: зачем нужен Kotlin, если есть Java?

Новым языком программирования Kotlin можно назвать уже с трудом: он был представлен в 2017 году, а спустя два года стал предпочтительным языком программирования для Android-приложений по версии Google. Многие студии разработки, в том числе такие известные как AppCraft, стали писать приложения исключительно на Kotlin, либо постепенно переводят на него существующие проекты на Java (к слову, это уже начали делать такие гиганты как Google, Netflix, Twitter, Uber, Netflix). Поэтому разработка android приложений заказать которую не составляет особого труда, в 2021 году ведется с нуля именно на Котлин. Такая «миграция» позволяет использовать в приложениях автоматическое выявление типов данных, функциональную парадигму и функции-расширения. По данным опроса StackOverflow 2019 года Kotlin вошёл в пятёрку самых любимых сообществом языков.

Плюсы

Kotlin использует JVM, поэтому одним из главных его достоинств является совместимость с Java: её библиотеки можно спокойно запускать из-под Котлина. Разработчики могут просто писать модули на Kotlin, которые отлично работают с существующим кодом Java. Выпуская байт-код, компилятор Kotlin позволяет двум языкам работать в унисон в одном проекте. Второй очевидный плюс — высокая плотность кода при выполнении одной и той же задачи, а значит меньше бойлерплейта:

Разработка приложений на Android: зачем нужен Kotlin, если есть Java?

Считается, что с безопасностью у Kotlin получше, чем у его конкурента. Язык не разрешает неформатированные типы и, как следствие, создает более безопасный код для типа, а так же автоматически проверяет типы данных, отслеживает null-значения и предотвращает появление NullPointerException — распространённой Java-уязвимости

Касаемо скорости компиляции: для чистых сборок Java действительно быстрее Kotlin на 10-15%, однако куда более распространён сценарий частичных сборок, когда инкрементная компиляция вносит большие улучшения. При запущенном демоне Gradle и включенной инкрементной компиляции Kotlin компилируется так же быстро или немного быстрее, чем Java. На графике ниже можно посмотреть на инкрементную компиляцию с измененным исходным файлом, когда файл импортируется во многие другие файлы проекта:

Разработка приложений на Android: зачем нужен Kotlin, если есть Java?

Минусы

Скорость компиляции является как плюсом, так и минусом этого языка, т.к. иногда она у Kotlin откровенно прихрамывает, в случаях как мы разобрались выше, если вы не изменяете файл, который импортируется многими другими файлами в проекте.

Так же нужно отметить, что Kotlin достаточно узкоспециализированный язык, в то время как Java-разбаботчики могут быть востребованы в куда более широком спектре проектов. Зная Java перейти на Kotlin проблем не составляет, а вот в обратную сторон такой трюк не работает. В вакансиях сейчас редко встретишь «чистый» Котлин. В довесок практически везде указана Java

Многие порталы в качестве минуса указывают еще отсутствие внятной поддержки. Это не соответствует действительности: уйма документации даже на русском языке, обилие учебных материалов, десятки форумов — с поддержкой у Kotlin всё в порядке

Kotlin нельзя выучить без знаний Java?

В этом вопросе очень много полярных мнений. Всё сходится к тому, что, изучая Kotlin, вы всё равно будете сталкиваться с основами Java, без фундаментальных знаний которой вы не напишите сколь-нибудь серьезного проекта. НО! С другой стороны, тот факт, что Котлин завязан на JVM, его можно изучать совсем не зная Java, тем более, что Kotlin значительно проще в этом плане. Тупик.

Если вы знаете основы Java, то многие моменты станут понятнее, когда вы программируете на Kotlin. НО! По ходу изучения Kotlin вы так или иначе начнете понимать библиотеки Явы, которые можно изучать «на лету», не проваливаясь в дебри документации. Опять тупик.

Несмотря на всю прогрессивность Котлина, на данный момент лучше знать Java и не знать Kotlin, чем наоборот. Практически все либы и классы написаны на Яве, мало-мальски знать этот язык придется. Тем более, что крайне полезно просматривать генерируемый байт-код или декомпелированный java-код. Как мы уже писали выше, Java может быть использована не только в мобильной разработке, в то время как Kotlin пока не снискал славы нигде, кроме андроид дева

Итог: 

Существует точка зрения по которой Java и Kotlin не совсем соперники. Скорее они существуют параллельно, как бы дополняя друг друга. Но стоит признать, что переход на Kotlin даст проекту новый виток развития, повысит эффективность за счет удаления ненужных строк и уменьшения количества ошибок при отладке, разгрузит штат для обслуживания legacy-кода. Всё больше и больше новых проектов пишется на Kotlin.

Про совместимость уже говорили — компилятор Котлин использует JVM, здесь нет никаких проблем. Если есть необходимость в Java API , то можно использовать Kotlin native или Kotlin JavaScript. Котлин более понятен и легок в освоении практически всех аспектов разработки: классов данных, методов, написании обратных вызовов и т.д. Он специально разработан для улучшения существующих моделей Java с использованием решений для устранения недостатков проектирования API.

Мнение редакции:

Kotlin — это «улучшенная версия» Явы, фактически её апгрейд или даже в какой-то мере ребилд. С этой точки зрения переход на Kotlin полностью оправдан

Как вам статья?

Рейтинг
( Пока оценок нет )
Диджитал на минималках
Комментарии: 29
  1. turkce dublaj

    Hello, yes this post is really fastidious and I have learned lot of things from it concerning blogging. thanks. Vincent Piccuillo

  2. turkce dublaj film izle

    Fantastic blog post. Really thank you! Much obliged. Clint Ludd

  3. online bahis casino

    Everyone loves it when folks come together and share ideas. Damian Maiocco

  4. bahis oyna

    I think this is a real great blog. Thanks Again. Want more. Bill Vona

  5. watch series

    Hi! I just want to offer you a huge thumbs up for the great information you have here on this post. I am returning to your blog for more soon. Jules Openshaw

  6. bahis oyna

    I was studying some of your content on this internet site and I think this site is real informative! Retain posting. Michael Stojanovic

  7. türkçe dublaj

    Wonderful post! We will be linking to this great post on our website. Keep up the great writing. Myles Zumstein

  8. türkçe dublaj

    I am not sure the place you are getting your information, but good topic. Adrian Jereb

  9. watch series

    By doing so, you will stay interested in blogging and connect with readers with similar interests. Sergio Insco

  10. bahis oyna

    Excellent article! We are linking to this particularly great post on our website. Keep up the good writing. Clair Macaskill

  11. kacak bahis siteleri

    I think the admin of this site is genuinely working hard in support of his web page, since here every information is quality based stuff. Teodoro Scheffler

  12. online bahis casino

    A good penile extender will be also medially tested and recognized. Jacob Marrotte

  13. bets10 giris

    Good way of telling, and good piece of writing to take facts on the topic of my presentation subject matter, which i am going to convey in university. Ike Altig

  14. sikis izle

    We came across a cool site that you simply may love. Take a look when you want. Ulysses Mizia

  15. erotik

    Pretty! This has been a really wonderful article. Many thanks for supplying this information. Jed Crosson

  16. bets10 giris

    Im grateful for the article post. Much thanks again. Awesome. Claude Ferrato

  17. online bahis casino

    Hey, thanks for the article. Much thanks again. Great. Carrol Speis

  18. striptiz

    Very good post! We will be linking to this great content on our site. Elliott Subijano

  19. genç kızlar

    Since the admin of this web site is working, no doubt very quickly it will be famous, due to its quality contents. Adolph Pascascio

  20. buy viagra

    Really superb information can be found on web blog. Roland Moes

  21. viagra

    Good post! We are linking to this particularly great post on our website. Keep up the great writing. Austin Clain

  22. viagra

    Audit is connected to the innovation and also dissemination of the dual entrance bookkeeping process. Darrel Rathai

  23. porno

    I have recently started a website, the information you provide on this web site has helped me greatly. Thanks for all of your time & work. Santiago Folan

  24. porno

    Looking forward to reading more. Great blog post. Really looking forward to read more. Really Cool. Armando Bembry

  25. eskort bayan

    So glad you are doing well. I just saw your dad yesterday at work & asked about you. Congrats on this next play you are in. Garrett Retort

  26. bahis

    I am sure this paragraph has touched all the internet visitors, its really really nice piece of writing on building up new webpage. Stefan Hoehl

  27. porno

    Well yes and no. It depends on accurately PS4 and Xbox vs. Sheldon Morrill

  28. sex

    This piece of writing will help the internet visitors for setting up new weblog or even a weblog from start to end. Stephan Maraldo

  29. watch series

    Likewise, his hips must be propped up, his legs slightly spread and knees partially bent. Fidel Friendly

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock
detector