JavaScript против Java: различия, сходства и история создания

  • 28 января, 17:41
  • 3956
  • 0

JavaScript и Java сбивают с толку многих новых рекрутеров. Они звучат похоже, и можно подумать, что у них одинаковые варианты использования, или, возможно, одна и та же компания создала оба языка. Давайте вкратце разберемся.

Java - краткая история

JavaScript против Java: различия, сходства и история создания

Java была создана в 1991 году Джеймсом Гослингом из Sun Microsystems. Sun Microsystems написала программное обеспечение для множества различных устройств.

Интересный факт: команде основателей было трудно придумать хорошее название для своего проекта, и пока они пили кофе, решили назвать язык в честь своего кофе.

  1. Кроссплатформенность (JVM)

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

  1. Объектно-ориентированный дизайн

Java быстро завоевала известность и популярность благодаря своей кросс-платформенной природе и шаблону объектно-ориентированного программирования (ООП). ООП был и остается популярным благодаря способности повторно использовать код и думать о сущностях в программе как об иерархиях типов. Java является королем шаблона проектирования ООП и требует, чтобы все в программе было классом!

JavaScript - краткая история

JavaScript против Java: различия, сходства и история создания

В 1995 году, через 4 года после создания Java, Брендан Айк создал JavaScript, когда работал в Netscape. В то время Netscape полностью контролировала рынок веб-браузеров, и Microsoft только начинала с проекта Internet Explorer.

В попытке превзойти Microsoft, Netscape заключил партнерское соглашение с Sun Microsystems и выпустил JavaScript именно с таким названием, чтобы привязаться к Java-шумихе, которая развивалась в сообществе разработчиков.

  1. Успех JavaScript

JavaScript начинался как небольшой язык сценариев для выполнения действий на стороне клиента в браузере. Начались разработки и были сделаны интересные  решения, в том числе:

  • Необязательные окончания строки с запятой
  • Объекты и классы, но с ограниченной  инкапсуляцией
  • Однопоточность (на основе обратного вызова, без параллелизма)

Время выполнения, скорость и тесты

Java и JavaScript работают по-разному. Для этого сравнения предположим, что Java скомпилирована в байт-код JVM, а JavaScript запускается в интерпретаторе NodeJS.

Примечание. Java можно скомпилировать в собственный код или запустить через интерпретатор, а JavaScript можно запустить вне браузера через Node.

Виртуальная машина Java (JVM)

JVM компилирует код (файлы.java) в скомпилированные классы (файлы .class). Эти файлы классов составляют законченную скомпилированную Java-программу с требованием, чтобы один из файлов классов имел функцию «main» в качестве точки входа. Файлы классов, как правило, архивируются и  распространяются вместе в виде файла .jar , что облегчает пользователям загрузку одного исполняемого файла.

NodeJS - V8 Engine

JavaScript - это интерпретируемый язык, который имеет много разных реализаций интерпретатора. Одним из наиболее распространенных способов запуска JavaScript в рабочей среде является использование интерпретатора NodeJS. Node использует движок Chrome V8  для интерпретации и запуска JavaScript.

Как вы можете видеть в следующих тестах, Java стабильно работает лучше, чем Node.js, в отношении памяти и процессора:

Что действительно замедляет JavaScript, так это то, что он интерпретирует код во время выполнения. 

Классы и ООП

В Java  все  является классом, а ООП применяется принудительно.

В JavaScript классы являются необязательными, а функциональное программирование  возможно и даже поощряется в последнее время. У JavaScript есть большинство парадигм ООП, но инкапсуляция  не так надежна, как с Java.

Потоки и параллелизм

JavaScript является однопоточным, что означает, что он никогда не будет выполнять код одновременно. Параллельное программирование является особенностью большинства языков, и JavaScript довольно уникален тем, что не может выполнить єту задачу.

В Java параллелизм доступен.

JavaScript компенсирует однопоточность, используя  асинхронное программирование и цикл обработки событий. Всякий раз, когда требуется вызов API или какой-либо другой длительный процесс, не блокирующий выполнение остальной части программы, цикл обработки отвечает за ожидание. Когда асинхронная задача завершается, основной поток может обнаружить результаты задачи.


0 комментариев
Сортировка:
Добавить комментарий