Шаг 17.
Основы Kotlin.
Переменные, константы и типы. Изучаем байт-код Kotlin

    На этом шаге мы рассмотрим механизм получения байт-кода.

    На 1 шаге вы узнали, что Kotlin является альтернативой языку Java и на нем пишутся программы для виртуальной машины JVM, которая исполняет байткод Java. Часто бывает полезно взглянуть на байт-код Java, который генерируется компилятором языка Kotlin и запускается под управлением JVM. Кое-где мы будем рассматривать байт-код, чтобы понять, как проявляются конкретные особенности языка в JVM.

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

    Например, вам захотелось узнать, как автоматическое определение типов переменных в Kotlin влияет на байт-код, созданный для запуска в JVM. Чтобы узнать это, воспользуйтесь инструментальным окном байт-кода Kotlin.

    В TypeIntro.kt нажмите Shift дважды, чтобы открыть диалоговое окно Search Everywhere (поиск везде). Начните вводить: "show Kotlin bytecode" (Показать байт-код Kotlin) и выберите из списка доступных действий Show Kotlin Bytecode, как только его увидите (рисунок 1).


Рис.1. Показать байт-код Kotlin

    Откроется инструментальное окно байт-кода Kotlin (рисунок 2). (Также можно открыть его с помощью меню Tools | Kotlin | Show Kotlin Bytecode.)


Рис.2. Инструментальное окно байт-кода Kotlin

    Если байт-код не ваш родной язык, не бойтесь! Переведите байт-код обратно в Java, чтобы увидеть его в более знакомом варианте. В окне байт-кода нажмите кнопку Decompile слева наверху. Откроется новая вкладка TypeIntro.decompiled.java с Java-версией байт-кода, сгенерированного компилятором Kotlin для JVM (рисунок 3).


Рис.3. Скомпилированный байт-код

    (В данном случае красное подчеркивание обусловлено причудами взаимодействия между Kotlin и Java, а не сообщает об ошибке.)

    Обратите внимание на объявление переменных playerName и experiencePoints:

  String playerName = "Estragon"; 
  int experiencePoints = 5;

    Несмотря на то что вы опустили объявление типа при объявлении обеих переменных в Kotlin, сгенерированный байт-код содержит явное объявление типа.

    Именно так переменные были бы объявлены в Java, и именно так байт-код позволяет увидеть работу механизма автоматического определения типов в языке Kotlin изнутри.

    Мы глубже изучим байт-код Java в следующих шагах. Сейчас закройте TypeIntro.decompiled.java (нажав Х на вкладке) и инструментальное окно байт-кода (используя значок в правом верхнем углу (рисунок 2)).

    В предыдущих шагах мы узнали, как сохранить данные базовых типов в vals и vars, а также рассмотрели, когда стоит их применять в зависимости от необходимости менять их значения. Мы увидели, как объявлять неизменяемые значения в виде констант времени компиляции. Наконец, узнали, как Kotlin использует автоматическое определение типов, чтобы сэкономить время за счет меньшего нажатия клавиш при объявлении переменных. Мы еще неоднократно воспользуемся этими базовыми инструментами. В следующей главе вы узнаете, как выразить более сложные состояния с помощью условных конструкций.

    На следующем шаге мы рассмотрим простые типы Java в Kotlin.




Предыдущий шаг Содержание Следующий шаг