JavaScript и Java сбивают с толку многих новых рекрутеров. Они звучат похоже, и можно подумать, что у них одинаковые варианты использования, или, возможно, одна и та же компания создала оба языка. Давайте вкратце разберемся.
Java - краткая история
Java была создана в 1991 году Джеймсом Гослингом из Sun Microsystems. Sun Microsystems написала программное обеспечение для множества различных устройств.
Интересный факт: команде основателей было трудно придумать хорошее название для своего проекта, и пока они пили кофе, решили назвать язык в честь своего кофе.
Кроссплатформенность (JVM)
Java - это язык программирования общего назначения, который позволяет разработчикам запускать код на любом устройстве. Код компилируется в специфичный для Java байтовый код, затем виртуальная машина Java (JVM) преобразует этот байтовый код в машинно-совместимый код. Когда код скомпилирован таким образом, Java становится полностью кроссплатформенным, что является основным фактором успеха Java.
Объектно-ориентированный дизайн
Java быстро завоевала известность и популярность благодаря своей кросс-платформенной природе и шаблону объектно-ориентированного программирования (ООП). ООП был и остается популярным благодаря способности повторно использовать код и думать о сущностях в программе как об иерархиях типов. Java является королем шаблона проектирования ООП и требует, чтобы все в программе было классом!
JavaScript - краткая история
В 1995 году, через 4 года после создания Java, Брендан Айк создал JavaScript, когда работал в Netscape. В то время Netscape полностью контролировала рынок веб-браузеров, и Microsoft только начинала с проекта Internet Explorer.
В попытке превзойти Microsoft, Netscape заключил партнерское соглашение с Sun Microsystems и выпустил JavaScript именно с таким названием, чтобы привязаться к Java-шумихе, которая развивалась в сообществе разработчиков.
Успех 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 комментариев
Добавить комментарий