Найти тему
ZDG

Java и JavaScript: родственники? Нет.

Java и JavaScript. Это два совершенно разных языка, которые часто принимают за родственников из-за того, что они называются похоже.

Давайте разберём их сходство и отличия по пунктам.

1. Синтаксис

Java и JavaScript используют похожий синтаксис: if, else, for, while... Но это не потому что они похожи, а потому что происходят от одного общего предка – языка C:

Такой же синтаксис используется и во многих других языках.

Java – более прямой наследник C, так как тоже имеет функцию main(), обязательную для выполнения программы, и типизацию.

2. Типы данных

Java является строго типизированным языком. Все переменные и функции должны иметь какой-то тип: число, строка, символ, объект...

В JavaScript используется динамическая типизация. Это значит, что никакая переменная не имеет определенного типа. Какое значение присвоят, такой тип и будет. Присвоили 5 – получился числовой тип. Присвоили 'a' – получился символьный тип.

3. ООП

Оба языка поддерживают ООП, то есть объектно-ориентированное программирование. Но разница между ними огромна. Java имеет классические возможности ООП: классы, наследование, интерфейсы, инкапсуляцию, полиморфизм и т.д. Я бы сказал, одни из самых образцовых. Если вам хочется изучить принципы ООП в полном объёме, то можно смело учить Java.

JavaScript не имеет классов, а наследование сделано совершенно по-другому, через прототипы. Я здесь даже не смогу пояснить, что это такое, потому что эта тема легко ломает мозг, и требует отдельной большой статьи. JavaScript лишён очень многих возможностей ООП, то есть фактически застрял на уровне обычных объектов со свойствами и методами. НЕ УЧИТЕ ООП с нуля на JavaScript – поломаете мозг!

4. Возможности

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

JavaScript, в силу своей браузерной специфики, ограничен работой с веб-запросами и браузерными элементами. Остальное ему попросту запрещено.

5. Компиляция и интерпретация

Исходный текст на Java компилируется в байт-код. Это как бы машинный код, который исполняется в виртуальной Java-машине. Если изменить исходный текст программы, то нужно его перекомпилировать. Байт-код может работать на любом устройстве и в любом окружении, где запущена Java-машина.

Исходный текст на JavaScript выполняется интерпретатором, вшитым в браузер. Изменение текста приводит к изменению работы программы сразу, компилировать ничего не нужно. Для ускорения работы JavaScript в последнее время применяются продвинутые методы, такие как динамическая компиляция (JIT) и какое-то подобие JavaScript-машины, но это всё спрятано внутри браузера или другой среды исполнения. Мы видим лишь то, что мы пишем программу и она сразу исполняется.

6. Почему тогда они называются похоже?

Это долгая история. На заре интернета компания Sun создала язык Java и стала продвигать его в качестве браузерного дополнения. В те времена браузеры могли отображать только статичные страницы. Java был единственным средством, чтобы браузер мог дать пользователю какой-то продвинутый функционал (анимацию, интерактивное управление). Происходило это так: браузер запрашивал у пользователя разрешение на установку Java-машины, затем скачивал Java-приложение (апплет) и выполнял его в этой машине.

В это же самое время компания NetScape, тогда один из крупнейших игроков на рынке браузеров, была готова заключить сделку с Sun, чтобы внедрить технологию Java-апплетов в свой браузер. Однако сама технология показалась ей слишком сложной. Netscape хотела дать возможность украшать веб-страницы не только профессиональным программистам, но и обычным дизайнерам и верстальщикам. Поэтому родилась идея сделать дополнительную технологию для простых людей – скрипт, который будет выполняться прямо в браузере. Сначала его назвали Mocha. Это не моча, а мокка – один из сортов (или рецептов? не разбираюсь) кофе, а другой сорт, как можно догадаться, называется Java.

Логотип Java - кофейная чашка.
Логотип Java - кофейная чашка.

Затем его переименовали в LiveScript, и в конце концов, по договорённости с Sun, он получил название JavaScript. Но кроме названия и похожего синтаксиса, между ними не было ничего общего.

Постепенно технология Java-апплетов ушла из браузеров, а JavaScript остался и продолжил развиваться.