
В этой статье мы рассмотрим основные черты этих языков, показав, что общее название — не более, чем начальная задумка разработчиков.
Язык Java, в процессе разработки носивший названия «Oak» и «Green», официально появился на свет в 1995 году. Он заимствовал многое от C/C++, однако продвигал новые концепции, включавшие в себя легкое и безопасное программирование. Поэтому изначально именно Java воспринимался как наследник этих популярнейших языков.
Основной принцип работы кода на Java — возможность программисту писать код один раз, чтобы он мог работать где угодно. Вместо компиляции различных файлов под каждую платформу, здесь создаётся JAR-файл. И если система поддерживает Java, то файл исполняется.
Для реализации такой задумки используется JVM, или Виртуальная машина Java. Это ничто иное, как набор инструкций, определяющих компиляцию в зависимости от платформы и дальнейшее исполнение кода. Такой принцип носит название just-in-time.
Хотите разобраться в Java? Рекомендуем начать с бесплатного онлайн-интенсива по Java для чайников.
Основные области применения Java:
- Android-приложения. Это официальный язык для самой популярной ОС на сегодняшний день. Это означает, что для получения лучших результатов и использования максимального количества возможностей, Java — идеальный язык
- Десктопные приложения. Кроме того, Java — один из инструментов для создания кроссплатформенного ПО. JavaFX и SWT вам в помощь.
- Системы предприятий. В отраслях, связанных с обработкой личных данных (банковские операции, финансы, торговля), Java используется как надёжный, простой в обслуживании и быстрый язык.
- Встроенные системы. Смарт-часы, некоторые контроллеры, светофоры и даже отдельные системы гибридных автомобилей используют Java. Самый актуальный вектор развития — Internet of Things.
- Научный исследования. Куда большую популярность здесь имеют MATLAB и Python, но и Java прекрасно справляется со сложными задачами, вроде обработки языка или управления искусственным интеллектом.
JavaScript
JavaScript был разработан на фоне огромных ограничений HTML. В Netscape Communications предвидели скорую потребность в динамичном функциональном вебе, поэтому всего за 10 дней они создали язык под названием LiveScript в том же 1995 году.
Позднее разработчикам пришла мысль дополнить функциональность с использованием Java. Именно так появилось окончательное название и схожий синтаксис. Правда на этом любые сходства заканчиваются. По понятным причинам, к тому времени Java в вебе еще не запускался, в то время как JavaScript быстро завоевал популярность, став вместе с HTML и CSS главными столпами современного интернета.
В отличии от Java, код которого компилируется, код JavaScript интерпретируется. То есть когда вы посещаете веб-страницу, ваш браузер получает код, написанный на JavaScript, и сразу же исполняет его. Для этого используются специальные движки, каждый браузер при этом использует свой: V8 — Chrome, SpiderMonkey — Firefox, Chakra — Edge и так далее.
Однако сегодня JavaScript больше не является исключительно браузерным инструментом. За более, чем два десятка лет с момента своего появления, JavaScript утвердился одного из самых гибких языков программирования, который применяется и в других областях:
- Веб-приложения. JavaScript невероятно хорош, как для разработки фронтенда, так и бэкенда. В первом случае, это влечет за собой манипуляции с DOM на стороне браузера (анимация, вставки данных, обновления), во втором — на стороне сервера (маршрутизация, обработка данных, взаимодействие с БД).
- Мобильные приложения. Такие инструменты, как React Native и PhoneGap, позволяют вам создавать полноценные мобильные приложения, используя лишь JavaScript. Подобные фреймворки делятся на два типа: те, что транслируют JavaScript в собственный код, и те, что сами используют движок JavaScript.
- Настольные приложения. Можно вытащить JavaScript в оффлайн, используя такие фреймворки, как Electron и NE.js. Движок при этом упаковывается в исполняемый файл, а в открываемом окне исполняется HTML/CSS/JS код.
Так что выбрать?
Учитывая современный уровень развития обоих языков, фактически выбор сводится к заданным требованиям производительности, функциональности и скорости исполнения.
Java чуть более сложный язык с большим количеством ограничений. Java-приложения менее склонны к ошибкам и в целом более функциональны, чем те, что созданы с использованием JavaScript. Но это имеет и свою цену, главная из которых — время и сложность разработки. JavaScript-приложения потребуют от вас меньше усилий, но исполняться они будут дольше, ошибок при отладке выскочит больше, да и сложный код вам писать вряд ли захочется.
Поэтому для веба лучше использовать JavaScript, а разработку сложного комплексного ПО лучше оставить Java. Что касается создания десктопных и мобильных приложений, то здесь дело вкуса. Я бы рекомендовал использовать Java, так как это обеспечит чистоту кода м меньшее количество ошибок. С другой стороны, JavaScript тоже для этого подойдет.
Если вы взглянете на статистику GitHub, то увидите, что JavaScript и Java — два гегемона современного мира программирования, опережая C/C++, Python, PHP и Ruby. Несмотря на то, что их имена схожи, что JavaScript, судя по названию, более легковесная, понятная, удобная версия Java, между ними всё же почти нет ничего общего.

В этой статье мы рассмотрим основные черты этих языков, показав, что общее название — не более, чем начальная задумка разработчиков.
Язык Java, в процессе разработки носивший названия «Oak» и «Green», официально появился на свет в 1995 году. Он заимствовал многое от C/C++, однако продвигал новые концепции, включавшие в себя легкое и безопасное программирование. Поэтому изначально именно Java воспринимался как наследник этих популярнейших языков.
Основной принцип работы кода на Java — возможность программисту писать код один раз, чтобы он мог работать где угодно. Вместо компиляции различных файлов под каждую платформу, здесь создаётся JAR-файл. И если система поддерживает Java, то файл исполняется.
Для реализации такой задумки используется JVM, или Виртуальная машина Java. Это ничто иное, как набор инструкций, определяющих компиляцию в зависимости от платформы и дальнейшее исполнение кода. Такой принцип носит название just-in-time.
Хотите разобраться в Java? Рекомендуем начать с бесплатного онлайн-интенсива по Java для чайников.
Основные области применения Java:
- Android-приложения. Это официальный язык для самой популярной ОС на сегодняшний день. Это означает, что для получения лучших результатов и использования максимального количества возможностей, Java — идеальный язык
- Десктопные приложения. Кроме того, Java — один из инструментов для создания кроссплатформенного ПО. JavaFX и SWT вам в помощь.
- Системы предприятий. В отраслях, связанных с обработкой личных данных (банковские операции, финансы, торговля), Java используется как надёжный, простой в обслуживании и быстрый язык.
- Встроенные системы. Смарт-часы, некоторые контроллеры, светофоры и даже отдельные системы гибридных автомобилей используют Java. Самый актуальный вектор развития — Internet of Things.
- Научный исследования. Куда большую популярность здесь имеют MATLAB и Python, но и Java прекрасно справляется со сложными задачами, вроде обработки языка или управления искусственным интеллектом.
JavaScript
JavaScript был разработан на фоне огромных ограничений HTML. В Netscape Communications предвидели скорую потребность в динамичном функциональном вебе, поэтому всего за 10 дней они создали язык под названием LiveScript в том же 1995 году.
Позднее разработчикам пришла мысль дополнить функциональность с использованием Java. Именно так появилось окончательное название и схожий синтаксис. Правда на этом любые сходства заканчиваются. По понятным причинам, к тому времени Java в вебе еще не запускался, в то время как JavaScript быстро завоевал популярность, став вместе с HTML и CSS главными столпами современного интернета.
В отличии от Java, код которого компилируется, код JavaScript интерпретируется. То есть когда вы посещаете веб-страницу, ваш браузер получает код, написанный на JavaScript, и сразу же исполняет его. Для этого используются специальные движки, каждый браузер при этом использует свой: V8 — Chrome, SpiderMonkey — Firefox, Chakra — Edge и так далее.
Однако сегодня JavaScript больше не является исключительно браузерным инструментом. За более, чем два десятка лет с момента своего появления, JavaScript утвердился одного из самых гибких языков программирования, который применяется и в других областях:
- Веб-приложения. JavaScript невероятно хорош, как для разработки фронтенда, так и бэкенда. В первом случае, это влечет за собой манипуляции с DOM на стороне браузера (анимация, вставки данных, обновления), во втором — на стороне сервера (маршрутизация, обработка данных, взаимодействие с БД).
- Мобильные приложения. Такие инструменты, как React Native и PhoneGap, позволяют вам создавать полноценные мобильные приложения, используя лишь JavaScript. Подобные фреймворки делятся на два типа: те, что транслируют JavaScript в собственный код, и те, что сами используют движок JavaScript.
- Настольные приложения. Можно вытащить JavaScript в оффлайн, используя такие фреймворки, как Electron и NE.js. Движок при этом упаковывается в исполняемый файл, а в открываемом окне исполняется HTML/CSS/JS код.
Так что выбрать?
Учитывая современный уровень развития обоих языков, фактически выбор сводится к заданным требованиям производительности, функциональности и скорости исполнения.
Java чуть более сложный язык с большим количеством ограничений. Java-приложения менее склонны к ошибкам и в целом более функциональны, чем те, что созданы с использованием JavaScript. Но это имеет и свою цену, главная из которых — время и сложность разработки. JavaScript-приложения потребуют от вас меньше усилий, но исполняться они будут дольше, ошибок при отладке выскочит больше, да и сложный код вам писать вряд ли захочется.
Поэтому для веба лучше использовать JavaScript, а разработку сложного комплексного ПО лучше оставить Java. Что касается создания десктопных и мобильных приложений, то здесь дело вкуса. Я бы рекомендовал использовать Java, так как это обеспечит чистоту кода м меньшее количество ошибок. С другой стороны, JavaScript тоже для этого подойдет.
JavaScript не применяется для создания апплетов или автономных приложений. Чаще всего JavaScript находится внутри документов HTML и обеспечивает уровень взаимодействия с веб-страницами, которого невозможно достичь с помощью простых документов HTML.
Основные различия Java и JavaScript:
Java представляет собой объектно-ориентированный язык программирования, а JavaScript — это объектно-ор иентированный язык создания сценариев.
Java используется для создания приложений, которые запускаются на виртуальных машинах или в браузерах, а код JavaScript выполняется только в браузере.
Код Java необходимо скомпилировать, а код JavaScript используется в текстовом виде. Для них требуются различные подключаемые модули.

Java и JavaScript — это не одно и тоже! Теперь вы знаете главную тайну масонов. В этой статье я хочу поделиться с вами мыслями и соображениями о языке JavaScript через глаза Java — разработчика. Проведу сравнение структур данных, типов, функций, объектов, классов и других общих возможностей языков Java и JavaScript.
Фундамент
JavaScript — это интерпретируемый, скриптовый язык для написания сценариев. Это значит, что тот код, который вы напишите, будет выполняться построчно, от инструкции в инструкции, от скрипта к скрипту. Java — язык компилируемый, это значит, что перед стартом программы на Java, компилятор должен перевести весь код, написанный вами, в специальный машинный код, понятный для JVM — bytecode.
Неудобства для Java-разработчика, начавшего писать на JS, связанные с этими отличиями будут следующие:
- Перед запуском компиляции вашего кода, написанного на Java, компилятор проведет за вас синтаксический и семантический анализ, и в случае проблем — оповестит вас об этом. Получается, что вы имеете возможность узнать об ошибке еще до запуска приложения. В JS, в силу отсутствия компилятора, такой проверки нет. И ошибки, допущенные вами в момент написания кода будут обнаружены только после запуска скрипта.
- Следующее неудобство возможно только для версии JS до ES5. Т.к. JavaScript выполняется построчно стиль написания функций, вызывающие другие функции, будет отличаться от принципов Чистого кода «дядюшки» Боба, проповедуемого для написания программ на Java. В JS, если из функции foo() необходимо вызвать функцию bar(), вы должны определить bar() до foo(). Если сделать наоборот, как в Java — приложениях, то вызов может закончится неудачно в некоторых старых браузерах.
Переменные и их типы
JavaScript — слабо типизированный язык, в отличии от Java. С одной стороны, это дает больше гибкости, с другой — больше возможностей совершить выстрел в ногу. Для объявления переменной в JS достаточно использовать ключевое слово var, после которого указать имя переменной и, если необходимо, значение. На практике же необязательно даже использовать ключевое слово var.
Теперь о типах. В JS для целочисленных и чисел с плавающей точкой нет разных типов. Они объединены в типе number.String, boolean такие же как и в Java. В JS есть тип Object. Если в Java это суперкласс всех классов, то в JS это просто один из типов.
Java-разработчика ничего не должно смущать. Теперь давайте попробуем провести операции между объектами разных типов и посмотрим что получится.
Некоторые результаты могут немного смутить Java-разработчика. Например, возможность использовать тип boolean таким образом: true && 1 и при этом получать какой-то результат. В Java невозможно провести такую операцию т.к. компилятор выдаст ошибку о том, что нельзя использовать оператор && с типами не boolean. Теперь обратим внимание на еще одно отличие JS и Java: операторы === и !==. Это операции сравнения, необходимые слабо типизированному языку, такому как JS. === — вернет true, если сравниваемые объекты равны по значению и их типы совпадают. !==, соответственно, вернет true, если сравниваемые объекты не равны по значению или их типы не совпадают. Рассмотрим несколько примеров:
Функции
В JS, так же как и в Java, функции могут возвращать/не возвращать значение, быть с аргументами и без. Вызвать функцию можно как в коде JS, как было показано в примере выше, так и реакцией на определенное событие на элементе html-разметки.
При нажатии на кнопку на странице будет напечатано «Calling foo» как результат вызова функции. Теперь о странностях на которые может обратить внимания Java-разработчик. Вернемся к примеру выше, где функция foo() вызывает в себе функцию bar() — которая используется только как внутренняя функция. По идеи мы ожидаем того, что ее можно сделать приватной. Но в JS нет никаких селекторов доступа. Нет возможности сделать поле private простым добавлением этого слова перед объявлением функции. Пойдем дальше. Создадим объект — экземпляр класса со своими полями и одним методом.
Если смотреть на этот код глазами Java-разработчика, то можно отметить, что функция Person — является конструктором объектов класса Person и определением полей, и методов, входящих в класс. Функция getLocation() является функцией класса Person. Внутри нее мы используем обращение к полям экземпляра класса this.person и this.age. Логично, что эта функция, использующая текущей экземпляр класса Person, должна работать только с ним и последний вызов функции getLocation() не должен работать. Но, в JS это нормально, потому что понятия класса, функции, методов класса размыты. Слабая типизация во всем. Выполнив этот скрипт вы получите следующий вывод в окне браузера:
Однако, переписав код следующим образом, определив функцию внутри класса, ее вызов не для экземпляра класса будет недоступен:
Последний вызов приведет к ошибке, т.к. функция getLocation() не определена. Получается что хоть в JS и нет модификаторов доступа, но есть область видимости функций и переменных, управляемая с помощью фигурных скобок. JavaScript прекрасен огромным количеством вариантов совершить выстрел себе в ногу.
Массивы
Когда мы говорим о массивах, то представляем структуру данных, хранящую однотипные элементы, доступ к которым осуществляется по индексу. Это в Java. Когда же дело касается JS и его слабой типизации, то в дело вступает настоящая анархия. В следующим примере мы создаем 4 массива. В первом элементы разных типов, во втором только числа, в третьем boolean, в четвертом boolean и number:
После выполнения скрипта мы увидим тип каждого элемента каждого массива и сумму двух первых цифр из массива чисел.
Вывод
При первом касании с языком JavaScript у Java — разработчика могут возникнуть все вышеперечисленные замечания и вопросы. При моем первом знакомстве с JS я испытывал не самые веселые эмоции. Скорее это было вот так: «Что за . ». Многие отличия и не понимания кроются в разнице типизаций двух языков. Я не знаю зачем JS нужна слабая типизация.
Возможно, есть выгоды почему так было сделано. Если вы знаете ответ, пишите в комментариях.
Да, есть TypeScript, который вроде как является типизированным, но в итоге он же будет переведен все в тот же JS. Лично я не сторонник слабой типизации, но мой коллега, недавно попробовавший JavaScript, почему-то был в восторге от нее. Возможно, это дело вкуса. А как считаете вы, что лучше слабая или сильная типизация?






