В чем разница между Java и JavaScript?

Как сказал веб-разработчик Джереми Кит в 2009 году: «Java относится к JavaScript так же, как грудинка относится к морскому свинку». Точная точность этой аналогии оспаривается, но дух этого суждения справедлив: Java и JavaScript, несмотря на общее лексическое происхождение, представляют собой два совершенно разных языка программирования. С течением времени они стали частично пересекаться, но JavaScript по-прежнему остается доминирующим языком фронтенд-разработки, который делает веб-сайты интерактивными, в то время как Java продолжает пользоваться популярностью для серверного и прикладного программирования. Если вы пытаетесь нанять разработчика, научиться программировать или создать сайт/приложение, важно знать разницу между Java и JavaScript.
Разные истории
Главная суть: Java появилась первой. JavaScript, который был похож на Java, но не имел с ней технической связи, возник, чтобы заполнить другую нишу.

Java была разработана за четыре года Джеймсом Гослингом и командой исследователей в Sun Microsystems, начиная с 1991 года и выпуская в 1995. Они разработали объектно-ориентированный язык, который может работать на нескольких операционных системах. С тех пор он использовался на широком диапазоне устройств, от телефонов до марсоходов NASA, и также был мультимедийной веб-технологией (как это было с Flash и как JavaScript остаётся) через Java Applets до 2016 года, когда Java официально прекратила поддержку.

JavaScript также был выпущен в 1995 году, но был создан за 10 дней Брэнданом Айхом в Netscape как способ сделать веб-страницы интерактивными после их загрузки браузером. Изначально в мае 1995 года он назывался Mocha, но был представлен вместе с Netscape Navigator как LiveScript в сентябре и был переименован в JavaScript к декабрю 1995 года. Учитывая, что язык был создан с целью быть похожим на Java как легковесный скриптовый аналог, название действительно имеет смысл - и это была довольно хорошая маркетинговая стратегия. С тех пор он стал одной из трёх основных компонентов современного Интернета наряду с HTML и CSS.
Также читайте: Как заблокировать навязчивый JavaScript в Chrome и Firefox
Технические различия
Оба, Java и JavaScript, являются объектно-ориентированными языками программирования, что означает, что программисты могут заставлять их работать, создавая фрагменты информации и связывая их с другими фрагментами информации. Объект «кот», например, может включать информацию о имени, цвете и возрасте кота, а также список действий, которые кот может выполнять, таких как мяукать, есть и спать. Информация в этом объекте затем доступна программисту, который может вывести информацию о коте или заставить его что-то сделать.
Это самое большое сходство. Однако различия здесь становятся более значительными.
1. Java компилируется, JavaScript интерпретируется

Java имеет систему «написать один раз, запустить везде». Это работает так:
- Напишите код на Java.
- Скомпилируйте код в побайтовый код, читаемый компьютером.
- Запустите код на Java Virtual Machine, которая является виртуальным компьютером, запускающим байт-код Java на устройствах.
Это означает, что всякий раз, когда вы хотите изменить программу, вам нужно внести изменения в код Java и снова перевести всю программу в байт-код.

JavaScript же может читаться браузерами так, как он написан. Браузер просто проверяет каждую строку и выполняет её. Это делает его более гибким и простым для изменения, хотя он уступает в производительности скомпилированному коду, так как его не запускают непосредственно на языке, читаемом машиной.
2. Статическая типизация (Java) против динамической типизации (JavaScript)
Большая часть языков программирования связана с хранением значений в переменных. Java статически типизирован, что означает, что вы должны указать, какого типа значение содержит каждая переменная, и затем это фиксируется. Например:
int a_number = 42;
char a_letter = 'z';«int» должен быть числом, а «char» — буквой.

JavaScript, однако, динамически типизирован, так что любая переменная может содержать любой тип данных, и они могут изменяться без проблем. Приведенный ниже код работает без проблем:
let number = 42;
let a_letter = "z";
Java имеет преимущество в скорости и отладке в этом плане: объявление типов переменных облегчает поиск проблем и также позволяет коду работать быстрее. Однако JavaScript быстрее для большинства разработчиков в работе.
3. Параллелизм
Java может одновременно запускать несколько разных потоков, что означает, что она может выполнять несколько задач одновременно.

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

Помните, что Java и JavaScript используют объекты для хранения информации. Они также оба используют «наследование», которое позволяет объектам получать свои свойства из другого места. В Java они получают свойства от классов, которые по сути являются чертежами с инструкциями о том, как строить объект. В JavaScript новые объекты создаются с использованием прототипов или объектов, которые могут быть скопированы для создания нового объекта.
В общем, это означает, что любой объект в JavaScript может стать прототипом, тогда как Java требует создания класса, который может создавать объекты. Чтобы сослаться на ранее приведенный пример, Java предоставляет инструкции о том, как построить кота, тогда как JavaScript просто клонирует его.
Какой мне нужен?

Если технические детали заставляли вас зевать, вы можете снова сосредоточиться! Если вы пытаетесь выбрать между Java и JavaScript, это действительно не так сложно.
В общем, вам потребуется JavaScript для:
- Веб-сайтов, веб-приложений и других интерфейсов фронтенда
- Простых веб-серверов/задач бэкэнда (с Node.js)
- Создания браузерных игр и анимаций
- Приложений/игр/программ, построенных на Electron или другом кроссплатформенном фреймворке
Однако вам, вероятно, потребуется использовать Java для:
- Android-приложений
- Десктопных приложений
- Серверных приложений
- Написания кода для телефонов, IoT-устройств и другого оборудования
Если вы хотите выбрать язык для изучения, это зависит от ваших целей. Если вы хотите построить карьеру в программировании и усвоить основы программирования, или если хотите работать над не веб-приложениями, Java считается более технически сложным языком. Он также является самым широко используемым в мире.
Однако, если вы хотите заняться веб-разработкой или в основном планируете работать над веб-сайтами и веб-приложениями, JavaScript, вероятно, является «необходимым» навыком. В долгосрочной перспективе не повредит изучить оба языка, поскольку оба охватывают концепции, которые могут сделать вас лучше (и более востребованным!) программистом.
Если вы хотите заняться разработкой игр, эти языки программирования подойдут вам больше всего.