Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Почему Kotlin?

Почему Kotlin?

Доклад о том чем так полюбился Kotlin всему сообществу разработчиков, в особенности Android, и почему еще вчера нужно было начать изучать Kotlin.

2aec47eb9a940c619f05972f0db5aa00?s=128

Kirill Rozov

April 21, 2018
Tweet

Transcript

  1. Почему Kotlin? Кирилл Розов Android Developer

  2. None
  3. None
  4. None
  5. None
  6. None
  7. Упрощение разработки

  8. Data класс Java public class Device { private String id;

    private String name; private String cpu; private long ramSize; public Device(@NotNull String id, @NotNull String name, @NotNull String cpu, long ramSize) { this.id = id; this.name = name; this.cpu = cpu; this.ramSize = ramSize; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCpu() { return cpu; } public void setCpu(String cpu) { this.cpu = cpu; } public long getRamSize() { return ramSize; } public void setRamSize(long ramSize) { this.ramSize = ramSize; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Device device = (Device) o; return ramSize == device.ramSize && id.equals(device.id) && name.equals(device.name) && cpu.equals(device.cpu); } @Override public int hashCode() { return id.hashCode() + name.hashCode() + cpu.hashCode() + (int) (ramSize ^ (ramSize >>> 32)); } @Override public String toString() { return "Device{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", cpu='" + cpu + '\'' + ", ramSize=" + ramSize + ‘}'; } }
  9. Data класс Kotlin data class Device(var id: String, var name:

    String, var cpu: String, var ramSize: Long)
  10. Операции с коллекциями List<Device> qualcommCpuDevices = new ArrayList<>(); for (Device

    device : devices) if (device.getCpu().equals("Qualcomm")) qualcommCpuDevices.add(device); List<Device> largeRamQualcommDevices = new ArrayList<>(); for (Device device : qualcommCpuDevices) if (isLargeRamDevice(device)) largeRamQualcommDevices.add(device); List<String> deviceNames = new ArrayList<>(); for (Device device : largeRamQualcommDevices) deviceNames.add(device.getName());
  11. Операции с коллекциями devices.stream() .filter(device -> device.getCpu().equals("Qualcomm")) .filter(Device::isLargeRamDevice) .map(Device::getName) .collect(Collectors.toList());

    List<Device> qualcommCpuDevices = new ArrayList<>(); for (Device device : devices) if (device.getCpu().equals("Qualcomm")) qualcommCpuDevices.add(device); List<Device> largeRamQualcommDevices = new ArrayList<>(); for (Device device : qualcommCpuDevices) if (isLargeRamDevice(device)) largeRamQualcommDevices.add(device); List<String> deviceNames = new ArrayList<>(); for (Device device : largeRamQualcommDevices) deviceNames.add(device.getName());
  12. Операции с коллекциями devices.stream() .filter(device -> device.getCpu().equals("Qualcomm")) .filter(Device::isLargeRamDevice) .map(Device::getName) .collect(Collectors.toList());

    devices.filter { it.cpu == "Qualcomm" } .filter(Device::isLargeRamDevice) .map { it.name } .toList()
  13. Операции с коллекциями Количество символов 0 100 200 300 400

    500 Java Java 8 Kotlin 97 153 447
  14. Упрощение разработки • Уменьшение объема кода • Интеграция с современными

    средствами разработки • Встроенные средства для повышения стабильности программ
  15. None
  16. Совместимость

  17. Совместимость • Полная совместимость с Java • Конвертация Java кода

    в Kotlin • Обратная совместимость • Поддержка современными IDE и др. системами
  18. Поддержка

  19. Поддержка • Разрабатывается JetBrains • Официальная поддержка от Google на

    Android • Open Source • Активная работа с сообществом • Частые обновления
  20. None
  21. Кол-во репозиториев на GitHub 0 6000 12000 18000 24000 2015

    2016 2017 Сейчас
  22. None
  23. None
  24. None
  25. Проекты • Kotlin Native • Kotlin Scripts • Coroutines •

    Мультиплатформенные проекты
  26. Изучение

  27. Изучение • kotlinlang.org
 На русском kotlinlang.ru • Kotlin Koans
 онлайн

    или оффлайн • Множество примеров • Хорошая документация • Книги от создателей языка и др. авторов
  28. BKUG.BY

  29. None
  30. Так зачем???

  31. None
  32. Будет большим плюсом • Знание языка Kotlin

  33. Ваш ход!

  34. krl.rozov@gmail.com krlrozov Кирилл Розов Android Developer СПАСИБО