Сравнение Kotlin и Java in back-end development | Сергей Немчинский | Антон Гусев

Поділитися
Вставка
  • Опубліковано 15 січ 2025
  • Мои дорогие, сегодняшний стрим начинается в 16:00 по Киеву. Мы с Антоном Гусевым сравним языки программирования Kotlin и Java in back-end development.
    Антон Гусев - Technical Lead в OpenLegacy. Успел поработать системным администратором, дизайнером полиграфии, руководителем отдела пре-пресс на крупном производстве. Пришел в IT 12 лет назад.
    Последняя возможность воспользоваться предложением месяца:
    Java Start + Java Tools всего за 2800 грн вместо 5400 грн за два курса - go.foxminded.u...
    Стартовые курсы (перед менторингом) - go.foxminded.u...
    🧠 Регистрируйся прямо сейчас на менторинг
    ⬇️ Учись у профи ⬇️
    🎓 Менторинг:
    JAVA - go.foxminded.u...
    PYTHON - go.foxminded.u...
    C#/.NET - go.foxminded.u...
    ANDROID - go.foxminded.u...
    FRONT-END (ANGULAR, REACT) - go.foxminded.u...
    SALESFORCE Developer - go.foxminded.u...
    UI/UX дизайн - go.foxminded.u...
    Unreal Engine - go.foxminded.u...
    QA Automation - go.foxminded.u...
    IOS разработка - go.foxminded.u...
    PHP - go.foxminded.u...
    Unity - go.foxminded.u...
    NODE.JS - go.foxminded.u...
    GOLANG - go.foxminded.u...
    Обучение на проекте - go.foxminded.u...
    🎓Продвинутые курсы для состоявшихся девелоперов:
    Enterprise patterns - go.foxminded.u...
    GRASP and GoF Design patterns - go.foxminded.u...
    Алгоритмы и структуры данных - go.foxminded.u...
    C# NEXT - go.foxminded.u...
    Unit testing Java (предзаказ) - go.foxminded.u...
    🔧 Пробное техническое собеседование со специалистом уровня Senior Developer/ Team Leader - go.foxminded.u...
    👔 Карьерная консультация с Сергеем Немчинским - go.foxminded.u...
    Есть вопросы по обучению в FoxmindEd? Пишите нам в телеграм - t.me/foxminded
    Вы можете стать спонсором канала и получать плюшки - / @sergeynemchinskiy
    ❤ FoxmindEd в Instagram: / foxminded.ua
    Сайт FoxmindEd для новичков: go.foxminded.u...
    Сайт для разработчиков уровня мидл+: go.foxminded.u...
    FoxmindEd в ФБ: / foxmindedco
    FoxmindEd в Instagram: / foxminded.ua
    Мой Telegram: t.me/nemchinsk...
    Для деловых запросов: youtube@foxminded.ua

КОМЕНТАРІ • 36

  • @AntonArhipov
    @AntonArhipov 4 місяці тому +3

    24:42 есть более идиоматичный синтаксис вынимания значения из мапы по ключу, вместо map.get(4), можно было написать map[4]
    35:16 один код под все платформы можно написать и скомпилировать. Просто этого в реальной жизни недостаточно и надо уметь взаимодействовать с целефой платформой, особенно это касается мобильных устройств.
    36:49 data class-ы и record-ы не совсем одно и то же. У них разные цели и семантика, не смотря на то, что синтаксичеки они очень похожи
    44:34 - перегрузка операторов к Kotlin не такая же как в С++. Можно перегружать только определённый набор операторов, и нельзя добавлять новые.
    57:11 - "Андроид это маленькие приложения" - Сергей намешил :)) Нормальные приложения для Android, то же WhatsApp, например, огромны с огромным количеством строк кода. Kotlin вынес Java на Andoid прежде всего изза лямбд - Android-разработчики устали страдать без новых языковых возможностей тк Java не обновлялась на Andoid достаточно быстро. А Kotlin со всем предлагаемым синтаксическим сахаром изначально компилировался под Java 1.6. Где Java 1.6 и где лямбды - 10 лет разницы.
    57:58 когда я слышу что кто-то переводит большой проект на Java 1 к 1му на Kotlin, я всегда сильно удивлён. Скорее всего, всё таки такой переед сопровождается изменением архитектуры или стека, а может быть и целых команд разработки. Например, Jira (которая была отдельным приложением) была переписана на Kotlin при переезде в облако.
    1:00:18 разработчики на Kotlin не стоят больше, чем на Java. Другое дело, что Kotlin может использоваться как HR-инструмент для привлечения Java-разрабочиков на перегретом рынке, когда компания не может ничем больше этих разработчиков привлечь
    1:07:02 - Groovy, Fantom, Ceylon, Gosu, Clojure, Xtend, Scala - имя им легион :) Понятно почему Сергей проводит эту параллель, но всё таки везде были свои нюансы и с Kotlin вышла сильно другая история.
    1:22:32 - Kotlin предоставляет возможность работать с null и это фича на уровне компилятора. Но это же не серебрянная пуля. Даже если вы перейдёте на Kotlin-фреймворки, проблема с null не исчезнет полностью хотя бы потому что приложение общается с внешним миром, например получает данные из БД - от туда сколько угодно нулей может придти и компилятор этого не заметит. Возможность проверки на nullable тип в сочетании с удобными синтаксическими конструкциями просто снижает возможность получить NPE, но не исключает его полностью.

1:23:38 Ktor - это не замена Spring. Это даже не фреймворк. Это набор библиотек для разработки HTTP приложений и он не предлагает "всё из коробки".

  • @MrDexis01
    @MrDexis01 10 місяців тому +2

    Антон привет! Учился у тебя, учил джаву, сейчас перешел на котлин. 😊

  • @ITisonline
    @ITisonline 10 місяців тому +3

    Kotlin был создан Питерскими ребятам, назван в честь острова Котлин рядом с Питером.

  • @arty8461
    @arty8461 10 місяців тому +14

    у всех, даже суперкрутых программистов обзорщиков есть одна общая наивная ошибка, это показ кода в микроскопическом формате при котором не то что на планшете не разглядеть и что уже не говорить о телефонах... Почему такой страх увеличить масштаб кода, ведь там пол экрана пусто? или вы транслируете только для тех кто смотрит вас на телевизорах с двухметровыми диаметрами???? аж бесит

    • @artemmm095
      @artemmm095 10 місяців тому +5

      У многих комментаторов, даже тех которые считают себя суперкрутыми экспертами, есть одна общая ошибка - вести себя по-хамски и вечно что-то предъявлять вместо того, чтоб спокойно и культурно объяснить

    • @pavel6398
      @pavel6398 10 місяців тому

      Диагональю*

    • @qwertyuseradmin
      @qwertyuseradmin 10 місяців тому

      ​@@artemmm095 и где нахамил автор этого комментария? Где написал риторический вопрос про 80" телевизор? 🤡

    • @nikulin_vrn
      @nikulin_vrn 8 місяців тому +1

      С одной стороны, претензия имеет место быть: тем, кто хочет посмотреть с телефона - некомфортно. С другой - ряд контр-аргументов:
      1. Контент делается для тех, кто его хочет смотреть. Всё. Не нравится - никто не принуждает.
      2. Всё, что связано с кодом лучше смотреть в рамках ПК, т.к. можно сразу поиграться в IDEA, посмотреть на адекватность тезисов, сделать заметки и т.п. Всё таки это не на 100% развлекуха, технический уклон материала как-будто намекает на некоторый перекос в сторону полезности.
      Ну, в целом это так: на вентилятор набросить и попытаться по-уворачиваться 😀Всем добра!

  • @zhennik263
    @zhennik263 10 місяців тому +2

    Обьясните пожалуйста, какая разница на сколько долго писать код? На всех проектах ты думаешь и ходишь на миты 7 часов в день, а пишешь прям пишешь код 1 час от силы хорошо если.

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil 10 місяців тому

      Писать, да. Но потом ещё же читать его неоднократно

    • @zhennik263
      @zhennik263 10 місяців тому

      @@Das.Kleine.Krokodil ну так и как было сказано Java читается на много проще. Даже когда там появляются var гребанные- сразу виден след индусов

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil 10 місяців тому

      @@zhennik263когда ты регулярно пишешь на котлине, то он читается отлично, нет никаких проблем

  • @sergiyscherban219
    @sergiyscherban219 10 місяців тому +1

    На стрімі розповідали що якщо декомпілювати код скомпільований з котліна то важко зрозуміти що він робить. А як виглядає пошук помилок типу OutOfMemoryException на jvm де виконується програма, яка зкомпільована з kotlin? Чи можна легко зрозуміти об'єкти яких класів зараз там виконуються? Якщо jvm напише stacktrace то його можна завантажити в ide і проаналізувати одразу в сорсах?

    • @humancorrector-473
      @humancorrector-473 8 місяців тому

      Чтобы диагностировать OutOfMemoryError надо делать HeapDump и смотреть в динамике по нескольким дампам какой класс неадекватно растёт в экземплярах и смотреть где он используется в коде, возможно по последним коммитам в случае, если раньше всё было ок.
      Про способы поиска утечек через байт-код слышу впервые

  • @DVBLEX
    @DVBLEX 10 місяців тому +5

    Як бекенд та андроїд розробник, можу сказати що Котлні найкраща та найкрутіша мова. Якщо потрібно використати найменше памяті і найвищу швидкість для Ентейрпайзу тоді краще використовувати Java, в усіх інших випадках Kotlin кращий.

    • @Rorkr27R
      @Rorkr27R 3 місяці тому

      Можна вчити тільки Kotlin чи без Java ніяк не обійтися ?

  • @sergiyscherban219
    @sergiyscherban219 10 місяців тому

    Чи можна підключатись remote дебагом до jvm з студії з проектом kotlin?

  • @baer126
    @baer126 8 місяців тому

    Хотел бы выучить kotlin надо ли учить Java , а потом kotlin ?

    • @faang29488
      @faang29488 8 місяців тому

      Смотря для чего. Если хотите в андроид - сразу учите котлин, джаву не смотрите. Если в бэк, то придется подглядывать

  • @seka1309
    @seka1309 9 місяців тому

    Без знания джавы стоит ли учить котлин?

    • @Lt.aldo_raine
      @Lt.aldo_raine 7 місяців тому

      Конечно полегче будет зная джаву учить Котлин, но нет ничего невозможного в том, чтоб без джавы его выучить

  • @prayer4675
    @prayer4675 8 місяців тому

    var в Java - это не замена типа, а ровно то же самое, что и в Котлине, то есть объявление локальной переменной с типом, который приходит справа.

  • @annahnidenko8020
    @annahnidenko8020 10 місяців тому +1

    Что делать с дилемой как стать андроид програмистом если нравится Kotlin и бесит Java 😅

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil 10 місяців тому +6

      В чем дилема?

    • @K11-s6x
      @K11-s6x 10 місяців тому +1

      плакать

    • @СергейБезногов-т6у
      @СергейБезногов-т6у 9 місяців тому +4

      Бежать надо не туда где находится шайба а туда где она будет. Учить надо Котлин!

    • @Georgggg
      @Georgggg 4 місяці тому

      Java бесит не одного тебя, Google официально задепрекейтил Java в Android, и теперь приоритетная поддержка у Kotlin.

  • @NorthSea-xb7jk
    @NorthSea-xb7jk 10 місяців тому

    Антон много пьет кофе?

  • @kdannothere
    @kdannothere 10 місяців тому +2

    А я перейшов з котліна/android (через бюрократію в плеймаркеті і складності підтримки різних версій андроїда) на js/ts/ангуляр. P.S. чекаю стрім з ангулярщиком))

  • @VolodymyrKvashenko
    @VolodymyrKvashenko 10 місяців тому

    Привіт
    Використовую Kotlin ще з версії 1.2.
    Ледве стримуюся дивитися вас хлопчики.
    Не знаєте для чого можна використати інфікси, ви серйозно?
    Java головного мозку )))
    А про таку штуку як DSL хтось з вас чув?
    Перегрузка операторів, теж більш зручно для написання DSL.
    Так, це дійсно дужне потужна штука, а потужними речами треба користуватися обережніше, вмикаючи мізки, а не кричати, "ой Боже, коли я останній раз бачив це в С++... як лайняно це було".
    Kotlin чемпіон для написання різних DSL.
    Людям хто хоче зрозуміти що таке Kotlin і для чого він, дуже не ражду починати з цього відео.
    Навіть для того щоб зробити оцінку Kotlin, теж не ражду.
    Це фейл.
    Багато подробиць пропущено.
    Якщо дійсно зацікавлені в тому щоб вчити Kotlin, шукайте інших людей з іншими матеріалами.
    Шукайте відео розробників Kotlin, де вони розповідають чому вони зробили так, а не інакше.
    Віджимайтесь хлопчики )))
    Від мене дізлайк )
    па-па

  • @9-260
    @9-260 10 місяців тому +1

    Согласен почти со всем что сказал Сергей однако хотел бы немного поделиться своим мнением.
    Каких то прям жутко новых синтаксических фич котлин практически не предлагает однако как Антон говорил последние версии JetBrains заняты компилятором поэтому стоит дождаться версий после k2. Как мне кажется основная проблема начать новый проект на нем это отсутствие хороший решений как с java. Ну вот например ktor, он конечно позволяет написать одно и то же приложение написав меньше строк чем spring однако если ты не писал на spring-е то можешь писать на нем говнокод, а строгость и читаемость и есть одной из причин за которое джаву и выбирали. Далее перейдем к orm. Самый популярное котлин решение тут exposed. Но он как по мне не удобный и на самом деле не я один так думаю.
    Так же Антон не рассказал про kotlin native который еще находится в разработке и потенциально он должен сделать kotlin быстрее java(но быстрее ли чем с graalvm хз). И вот если б на нем замутить enterprise решение то получилось бы интересно. Конечно для java есть quarkus, но тут возникает ситуация что одно и то же приложение будет работать одинаково, но ты возьмешь тот фрейм который написан на более хорошем языке. Что касается легаси тут все так уже обсуждали довольно спорно, однако реаль любого ринка это то что потребительские привычки меняются редко и не охотно поэтому, как правило, вы находите новых потребителей. И вот сейчас даже для таких новых потребителей котлин увы ничего не предлагает. Поэтому нужно дождаться когда его выбор даст тебе больше чем просто синтаксический сахар над джавой.

    • @AntonArhipov
      @AntonArhipov 10 місяців тому

      > потенциально он должен сделать kotlin быстрее java
      Сделать что-то что будет реально быстрее JVM будет требовать координально другого подхода к дизайну технологии. Kotlin Native интересен больше как целевая платформа, что позволяет переиспользовать код на Kotlin между платформами (например в случае мобильной разработки)
      Про производительность будет интереснее говорить в контексте Wasm.

    • @9-260
      @9-260 10 місяців тому

      @@AntonArhipov А для бекенда планируется какая то технология? Вы можете уточнить у меня что я имею ввиду, как я выше упоминал GraalVm от Oracle из коробки поддерживается в quarkus. Ну не плохо было бы иметь такое для kotlin, хотя я только учусь на backend разработчика поэтому возможно я мог привести плохой пример.

    • @AntonArhipov
      @AntonArhipov 10 місяців тому

      Если под технологией подразумевается фреймворк, то вполне можно использовать Java фреймворки: Spring, Quarqus, Micronaut -имя им легион. Но есть и фреймворки написанные полностью на Kotlin: Ktor, http4k - их тоже сообщество очень любит и тоже можно собирать GraalVM native image.

  • @95thh
    @95thh 10 місяців тому +1

    Первый