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

Почему Kotlin?

Почему Kotlin?

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

Kirill Rozov

April 21, 2018
Tweet

More Decks by Kirill Rozov

Other Decks in Education

Transcript

  1. 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 + ‘}'; } }
  2. Data класс Kotlin data class Device(var id: String, var name:

    String, var cpu: String, var ramSize: Long)
  3. Операции с коллекциями 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());
  4. Операции с коллекциями 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());
  5. Упрощение разработки • Уменьшение объема кода • Интеграция с современными

    средствами разработки • Встроенные средства для повышения стабильности программ
  6. Совместимость • Полная совместимость с Java • Конвертация Java кода

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

    Android • Open Source • Активная работа с сообществом • Частые обновления
  8. Проекты • Kotlin Native • Kotlin Scripts • Coroutines •

    Мультиплатформенные проекты
  9. Изучение • kotlinlang.org
 На русском kotlinlang.ru • Kotlin Koans
 онлайн

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