Знать технические различия между двумя языками программирования
Каким беспорядком может быть использование одного и того же имени — особенно если вы владеете языком программирования. Даже если вам уже больше 20 лет, новые ИТ-специалисты периодически путают вас с вашим тезкой. Это происходит постоянно с Java и JavaScript, несмотря на то, что они вообще не связаны! Как сказал кто-то в Интернете, они коррелируют почти так же, как автомобиль и ковер.
Почему у этих двух языков такие похожие названия? Чем они отличаются друг от друга и что еще у них общего? Эта статья даст ответы на эти вопросы.
В Самом Начале Это Была Java
Sun Microsystems приступила к разработке будущего языка Java в 1991 году. Он предназначался для интерактивного телевидения и любительских устройств. Однако язык оказался слишком сложным для такого современного устройства. Сначала Java назвали Oak в честь дуба, который рос рядом с офисом создателя основного языка Джеймса Гослинга. Позже проект был переименован в Green. Наконец, возможно, под влиянием многократного употребления кофеина, мы получили название Java. Как сорт кофе. Или остров.
Java была впервые выпущена в 1995 году. Его девиз обещал нам, что то, что однажды написано на этом языке, будет работать везде (“Напиши один раз, беги куда угодно”). Это означает, что один и тот же код может быть скомпилирован для разных платформ благодаря виртуальной машине. Это, а также знакомый C-подобный синтаксис и возможность работы в браузерах привели к чрезвычайно быстрому росту популярности Java.
В Том Же Году, Чуть Позже: Знакомьтесь, JavaScript!
Не все молодые ИТ-специалисты помнят Netscape Navigator. Это был самый первый успешный интернет-браузер, появившийся еще в 1994 году. Собственно, рождение браузера и развитие интернет-технологий привели к необходимости в языке, который мог бы работать на них.
Итак, в тот же год, когда мир увидел Java 1.0, сотрудник Netscape по имени Брендан Эйх написал нечто особенное. Работодатель поручил Брендану создать язык, который изначально запускается в браузере (в отличие от Java, для загрузки которого требуются инкапсулированные Java-программы) и достаточно прост, чтобы привлечь непрофессиональных программистов. По мере того как популярность Java росла, менеджеры Eich хотели, чтобы их детище “выглядело как Java. ” Эйх в какой-то степени подчинился, но не отступил от главной цели. Он писал клиентский скриптовый язык для непрофессиональных разработчиков, и он совсем не похож на Java.
Однако команде Netscape нужно было рекламировать свой новый язык. Вероятно, именно поэтому проект JavaScript изначально назывался Mocha (кстати, это тоже кофе). Позже название было изменено на LiveScript.
Почти в то же время началась первая война браузеров между Netscape Navigator и Internet Explorer. Ребятам из Netscape нужно было усилить свой браузер новым языком. Команда Netscape договорилась с Sun Microsystems о том, что Java будет работать в Netscape Navigator, и язык по лицензии был переименован с LiveScript на JavaScript из-за проблем с маркетингом. В тот момент Java была горячей штукой.
Технические различия между Java и JavaScript
Итак, Java и JavaScript – это оба языка программирования. Однако они очень разные. Давайте сначала поговорим об основных технических различиях.
Java на основе классов против JavaScript на основе прототипов
И Java, и JavaScript являются объектно-ориентированными, но Java – это язык, основанный на классах, в то время как JavaScript основан на прототипах. Что это значит?
В Java все является классом. Класс – это шаблон многократного использования для создания определенных объектов. Объекты – это просто структуры данных, которые мы используем в программировании для хранения информации. Например, Cat может быть классом с возрастом, окрасом, именем и способностью мяукать. Рыжий Пух, трехлетний, является особым объектом класса Cat .
Итак, в Java мы используем шаблоны — классы — для моделирования реальных объектов и ситуаций, а затем создаем конкретные экземпляры. Давайте рассмотрим простой пример: программа, которая выводит фразу “Я разработчик программного обеспечения” в консоль.
Public class Developer { public static void main (String[] args) { System.out. println("I am a software developer"); } }
Здесь мы создали класс, метод main (функцию), затем мы вызвали метод println . В Java вы оборачиваете все в класс.
Такая ориентация на классы делает код более сложным и подробным, но в то же время он имеет более читаемую и логичную структуру, что упрощает обслуживание и поддержку больших проектов. В JavaScript вам не нужно делать все внутри класса. Вот программа на JavaScript для распечатки фразы:
console.log("I am a software developer");
Несколько лет назад в JavaScript были введены классы. Они представляют собой своего рода синтаксический сахар по сравнению с прототипным механизмом наследования JavaScript. Однако этот синтаксис класса не вводит новую объектно-ориентированную модель, а скорее предоставляет более простой и чистый способ создания объектов и организации наследования. Вот пример:
class Programmer { constructor(name, language){ this.name = "John"; this.language = "JavaScript"; } }
Разница в исполнении
Основной принцип запуска программ на этих языках отличается: Java – это скомпилированный язык, в то время как JavaScript – это интерпретируемый язык.
Когда вы пишете Java-код в интегрированной среде разработки (также известной как IDE), он компилируется в байт-код. Обычный человек не может его прочитать, но в Java есть специальная виртуальная машина Java (JVM), которая может легко ее запустить. Принцип WORA на самом деле применим и к этому: использование скомпилированного языка означает, что внесение изменений в основном включает в себя перестройку программы. Излишне говорить, что это может быть сложным процессом и требует использования специального программного обеспечения. К счастью, код Java сначала компилируется, а затем запускается позже, так что вы можете сразу увидеть структурные проблемы.
JavaScript – это язык сценариев, поэтому он состоит из обычного текста. Итак, код выполняется в том же синтаксисе, в каком вы его пишете, строка за строкой. В какой-то момент в прошлом это означало более медленное выполнение. Не волнуйтесь, сейчас это не тот случай.
Однако вы должны иметь в виду, что это вызывает еще одно различие между Java и JavaScript: Вы можете найти ошибки и проблемы только во время работы программы — не раньше. После компиляции Java-приложения вы не можете изменить его на лету. Вам нужно отредактировать исходный код. Код JavaScript может быть изменен без компиляции или интерпретации. “Классический” JavaScript выполняется прямо в браузере, и в этом есть и плюсы, и минусы, потому что иногда трудно найти ошибку. В Java компилятор помогает вам. Это одна из причин, по которой некоторые эксперты рекомендуют сначала изучать скомпилированные языки, такие как Java, даже если JavaScript несколько проще на первых шагах.
Печатание
Java – это статически типизированный язык, в то время как Javascript имеет динамическую типизацию. Объявление переменных в Java более жестко, чем в JS. Что это значит? Давайте посмотрим на этот Java-код:
String myString = "I am String in Java"; int number = 7;
Здесь мы объявили строку с именем myString и вложите в него определенное значение ( “Я силен в Java” ). Кроме того, мы объявили целое число, и его значение равно 7 . В Java вы должны указать типы значений, которые вы собираетесь сохранить в определенной переменной. Как только вы объявили, что переменная имеет определенный тип данных, она должна быть одного и того же типа на протяжении всего срока ее службы. Таким образом, невозможно написать что-то подобное на Java, потому что “Alex” – это строка:
int number = 7; number = "Alex";
Но переменная number была объявлена как целое число.
Java не позволяет вам этого делать.
А как насчет JavaScript? Как я уже говорил, она динамична. Итак, вот код JavaScript:
let myString = " I am a String or something else in JavaScript"; let number = 7;
В JavaScript вы можете переназначить свою переменную с помощью разных типов:
let number = 7; number = "Seven"
Итак, теперь наша переменная number представляет собой String . Это абсолютно нормально для JavaScript. Это удобно, но может быть сложно для поддержки кода.
Скорость разработки и безопасность
В самом общем виде запуск Java-приложения занимает намного больше времени, но как только вы настроили структуру своего приложения, затраты на обслуживание намного ниже по сравнению с приложением JS. Последнее имеет простое начальное время развертывания, приложение относительно простое, но уровень обслуживания, необходимый для приложения JavaScript, со временем увеличивается.
Java всегда запускается медленно, но у нее очень стабильное будущее по сравнению с JS. Таким образом, начать работу с ним легко, но как только вы начинаете работать, у вас появляется это массивное приложение, которое немного раздражает в обслуживании.
Параллелизм/многопоточность
В классическом смысле многопоточности JavaScript является однопоточным. Однако он компенсирует однопоточность за счет использования асинхронного программирования и циклирования событий. Цикл событий отвечает за выполнение кода, сбор и обработку событий, а также выполнение поставленных в очередь подзадач. Эта модель сильно отличается от других языков программирования, таких как C и Java. Всякий раз, когда требуется вызов API или какой-либо другой длительный процесс, не блокирующий остальную часть программы, цикл обработки отвечает за ожидание. Когда асинхронная задача завершается, основной поток может обнаружить результаты выполнения задачи.
В Java многопоточность доступна из коробки, и она реализована очень эффективно. Вам просто нужно выяснить, как это работает. Потоки совместно используют одну и ту же область памяти, поэтому вы можете быстро переключаться между ними. Потоки независимы друг от друга. Один поток не влияет на работу других потоков.
Что Вы можете создать на Java и JavaScript?
Вот один из самых популярных вопросов о различиях между Java и JavaScript. Что ж, классический JavaScript – это все, что связано с интерфейсным программированием. Вы можете назвать его одним из членов основной триады Интернета вместе с HTML и CSS. HTML – это структура веб-сайта, CSS отвечает за оформление (форматирование, цвет), а JavaScript добавляет динамическое взаимодействие. Классический JavaScript запускается в браузере на стороне клиента. Таким образом, основная область JavaScript – это интерфейс веб-сайтов. Однако язык развивается и в настоящее время использует различные библиотеки и фреймворки. JavaScript может сделать гораздо больше. Например, вы можете создавать веб- и мобильные приложения и даже игры.
Java является лидером в серверном программировании огромных приложений корпоративного уровня. Прежде всего из-за его безопасности, относительной простоты обслуживания кода и хорошей масштабируемости. Таким образом, большинство крупномасштабных проектов для банков, торговли, автомобильной отрасли и т.д. написаны на Java. Кроме того, он используется для серверной разработки, научного программирования (особенно в области больших данных), Интернета вещей и мобильных приложений для Android.
Правила игры меняются: Node.js
Помните, как я ранее упоминал “классический” JavaScript? Я сделал это не зря, а с намеком на то, что существует еще и “неклассический” JavaScript. Его имя Node.js (или серверный JavaScript). Его можно использовать для написания серверных сайтов и серверных приложений. Вы, наверное, уже поняли, что вместе с Node.js , JavaScript вошел на исконную территорию Java (не только Java, конечно, но очень большая доля этого рынка принадлежит Java).
Однако, когда мы говорим о Java, мы говорим не только о языке, но и о виртуальной машине Java, а также обо всей экосистеме и инфраструктуре, построенной вокруг этой машины. Как минимум, их можно сравнить на этой основе. В результате в обоих случаях у нас есть среда выполнения. В случае Java это виртуальная машина. В случае Node.js , это движок V8, который присутствует в большинстве операционных систем, таких как Windows, Linux, macOS и менее известных.
Когда код JS попадает в v8, он компилируется в байт-код, который используется в виртуальной машине как раз вовремя. Код в JS выполняется все быстрее и быстрее.
Байт-код – это промежуточный язык высокого уровня. Поэтому в виртуальной машине Java пишут не только на Java, но и на Scala и Kotlin.
На самом деле, сравнивая Node.js а Java – это тема для отдельной подробной статьи. Я сформулирую это так: Java сейчас является лидером, но Node.js довольно стабильна. Есть плюсы в том, что разработчики backend и frontend пишут код, используя один и тот же язык, и он будет работать более или менее одинаково на разных ОС из-за того, что существует среда выполнения.
Вывод
В этой статье мы обсудили различия между Java и JavaScript. Они не родственники. Это разные языки программирования.
Соперники? Да, отчасти, благодаря Node.js . Однако позиции Java в разработке больших серверных приложений остаются гораздо более уверенными, и если вас интересует именно эта область, вам следует присмотреться к Java повнимательнее.
Друзья? Еще более твердое “да”! В конце концов, основное применение JavaScript – это интерфейс. Поэтому команды, работающие над крупными проектами, обычно имеют как серверную часть на Java, так и клиентский чат на JavaScript. Более того, JavaScript очень популярен как второй язык, и почти каждый разработчик Java хотя бы немного знает JavaScript.
Впервые опубликовано по адресу Лучшее программирование .
Оригинал: “https://dev.to/selawsky/java-vs-javascript-relatives-rivals-or-friends-497g”