Кто такие компиляторы? - 1

— Привет, Амиго. Меня зовут профессор Ханс Нудлс. Я – глава Ученого совета «Galactic Rush», а также курирую проект по обучению тебя программированию на Java.

— День добрый, профессор Нудлс.

— Я хочу рассказать тебе, почему Java – это очень крутой язык программирования.

— Ты не раз еще услышишь, что неоспоримое преимущество Java над другими языками – это мультиплатформенность. Что же это такое и с чем его едят? Но начну немного издалека.

— Дело в том, что компьютер умеет исполнять только простейшие числовые команды. Для собак есть команды «Рядом», «Лапу» и другие, слыша которую собака что-то делает важное.

У компьютера роль таких команд выполняют числа: каждая команда закодирована некоторым числом – кодом (их еще называют машинным кодом).

— Писать программу в виде чисел очень сложно, поэтому люди придумали языки программирования и компиляторы. Такой язык с одной стороны понятен человеку, с другой – компилятору. Компилятор – это специальная программа, которая переводит текст программы, написанный на языке программирования, в набор машинных кодов.

— Обычно программист пишет программу на языке программирования, а затем запускает компилятор, который на основе написанных программистом файлов с кодом программы делает один файл с машинным кодом – окончательную (скомпилированную) программу.

  • Программа на языке C++
  • Компилятор
  • Программа состоящая из машинных кодов

— Получившаяся в итоге программа сразу может выполняться на компьютере. Минусом такого подхода есть то, что код полученной программы сильно зависит от процессора и операционной системы. Программа, скомпилированная под Windows, не будет работать на телефоне с Android.

— Т.е если я написал программу и скомпилировал ее для Android, то она не будет работать, если я попробую запустить ее под Windows?

— Да.

Ясно

— Но у Java гораздо более инновационный подход.

  • Программа на языке Java
  • Java‑компилятор
  • Программа состоящая из специально независимых кодов (байт‑код)
  • Java VM
  • Программа состоящая из машинных кодов

— Компилятор Java не компилирует все классы в одну программу из машинных кодов. Вместо этого он компилирует каждый класс по отдельности и не в машинные коды, а в специальный промежуточный код (байт-код). Компиляция в машинный код выполняется при запуске программы.

— А кто же компилирует программу в машинный код при ее запуске?

— Есть специальная программа под названием JVM (Java Virtual Machine) – Виртуальная Машина Java. Именно ее запускают первой, когда нужно запустить программу, состоящую из байт-кода. А уже JVM перед выполнением нужной программы компилирует ту в машинный код.

— Как интересно. А зачем понадобилось так делать?

— Это очень мощный ход. И одна из причин тотального доминирования Java.

— Благодаря такому подходу программы, написанные на Java, могут выполняться практически на любом устройстве – компьютеры, телефоны, банкоматы, тостеры, банковские карточки(!).

— Круто!

— Преимуществ такого подхода очень много. Именно поэтому все программы на Android тоже пишутся на Java. А благодаря развитию мобильного сектора, Java занимает доминирующее положение в следующих отраслях программирования:

1) Enterprise: тяжелые серверные приложения для банков, корпораций, инвестфондов и т.д.

2) Mobile: мобильная разработка (телефоны, планшеты), благодаря Android.

3) Web: лидирует PHP, но и Java держит солидный кусок рынка.

4) Big Data: распределенные вычисления в кластерах из тысяч серверов.

5) Smart Devices: программы для умного дома, электроники, холодильников с выходом в интернет.

— Java – это не просто язык, это целая экосистема: миллионы готовых модулей, которые ты можешь использовать в своей программе. Тысячи сообществ и форумов в интернете, где можно попросить помощи или совета.

— Чем больше ты будешь программировать на Java, тем больше будешь находить ответов на вопрос

— «Почему именно Java?». На этом на сегодня все.

— Спасибо, профессор. Очень интересная и вдохновляющая лекция.