Еще в 2009 году веб-разработчик Джереми Кейт отмечал

Java для JavaScript - это то же самое, что Ham для Hamster.

Сегодня мы рассмотрим эту аналогию. Г-н Кейт был прав, когда сказал эти слова тогда, но в 2018 году это все еще верно, но количество последователей JavaScript выросло во много раз. Давайте посмотрим на использование языков в отрасли на основе опросов stackoverflow.com:

с появлением в 2009 году Node.js (открытый исходный код, кроссплатформенная среда выполнения JavaScript, выполняющая код JavaScript на стороне сервера) и стандартизация и поддержка со стороны всех крупных технологических гигантов JavaScript взял на себя ведущую роль в веб-разработке. Стандартный программист на Java может ненавидеть JavaScript из-за того, как написан его код. Но эта функция может понравиться новичку и полюбиться разработчикам JavaScript. Следует помнить, что оба языка были созданы по разным причинам. С самого начала Java должна была стать серверным языком, а также работать на любой машине. С другой стороны, JavaScript был задуман как интерфейсный язык, который можно было запускать в браузере. Но по мере того, как оба росли и получали сторонников, они оба хотели оказывать поддержку по всем аспектам программирования. Итак, сегодня мы можем делать все как с Java, так и с JavaScript, используя правильные расширения / пакеты.

Из-за своего происхождения Некоторый интерфейсный код Java не имеет смысла для интерфейсного разработчика JavaScript, а внутренний код JavaScript не имеет смысла для внутреннего разработчика Java. Но индустрия понимает, что разработчики и программисты хотят использовать один язык, и с каждым последующим обновлением языков программирования они пытаются преодолеть этот пробел. 28 марта 2018 г. Java включила var как вывод типа локальной переменной, без сомнения, из-за усиливающегося влияния JavaScript заинтересованные стороны сообщества.

Ecma International (они отвечают за поддержку стандартизации JavaScript) также пытается включить многие передовые языковые практики в JavaScript.

И Java, и JavaScript являются языками программирования, а языки программирования - инструментами программистов. Задача программистов - использовать нужный инструмент в нужное время. Возьмите, например, изображение ниже,

оба сделают свою работу, но после небольшой ссоры. То же самое применимо и к языкам программирования. Вероятно, это зависит от специфики проекта, ваших навыков и ряда других факторов.

в статье Ёситака Шиоцу на upwork.com под названием Java против JavaScript: в чем разница? он описывает различия следующим образом:

Скомпилированный и интерпретируемый. Java считается скомпилированным языком программирования. JavaScript считается интерпретируемым языком сценариев. Разница заключается в реализации: Java компилируется в байт-код и запускается на виртуальной машине, тогда как JavaScript может интерпретироваться непосредственно браузером в синтаксисе, который он написан (хотя на практике он обычно минимизирован).

Сравнение статической и динамической проверки типов. Java использует статическую проверку типов, при которой тип переменной проверяется во время компиляции. Программист должен указать тип (целое, двойное, строковое и т. Д.) Любой создаваемой им переменной. JavaScript, как и большинство языков сценариев, использует динамическую типизацию, при которой безопасность типов проверяется во время выполнения. Программисту не требуется указывать тип создаваемой переменной. У этих двух парадигм есть много плюсов и минусов, но основное преимущество статической проверки типов состоит в том, что ошибки типов выявляются на ранней стадии разработки, а поскольку компилятор точно знает, какие типы данных используются, код обычно выполняется быстрее или использует меньше памяти. . Основное преимущество динамической проверки типов - продуктивность программиста - вы можете назначать типы на досуге.

Параллелизм. Возможность одновременного выполнения нескольких последовательностей инструкций в Java и JavaScript обрабатывается по-разному. Java использует несколько потоков для параллельного выполнения задач. JavaScript, особенно в том виде, в котором он существует как Node.js в серверных приложениях, обрабатывает параллелизм в одном основном потоке выполнения через систему очередей, называемую циклом событий, и систему разветвления, называемую кластеризацией узлов. В большинстве случаев оба метода работают нормально, но Java, как правило, быстрее, потому что совместное использование памяти между потоками намного быстрее, чем межпроцессное взаимодействие (IPC).

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

Это были языковые различия между языками.

Но новый программист не хочет знать этого, он / она просто хочет знать, что я должен узнать, что будет делать все, и вероятный ответ, который он / она получит, - это JavaScript.

Серверный код: Node.js, Express.js и т. Д.

Разработка под Android / IOS: React Native

Веб-интерфейс: ReactJS, AngularJS и т. Д.

Рабочий стол: Электрон

JavaScript великолепен как язык Интернета. С ростом доступности Интернета и из-за Node.js JavaScript сегодня стал очень доминирующим. NodeJS с ExpressJs позволили JavaScript успокаивающе работать на стороне сервера. Еще одним важным фактором успеха JavaScript является npm (менеджер пакетов узлов) и множество доступных там пакетов / фреймворков. Какую бы задачу вы ни пытались выполнить, существует вероятность того, что в npm есть несколько пакетов для этой функции. NodeJs отлично подходит для создания быстрых масштабируемых сетевых приложений, поскольку он способен обрабатывать огромное количество одновременных подключений с высокой пропускной способностью, что приравнивается к высокой масштабируемости.

но веб-разработка - это еще не все и все.

Java может делать все это с точностью и эффективностью, а также специализируется на некоторых других вещах, таких как: корпоративное программное обеспечение, аналитика больших данных, аппаратное программирование, научные вычисления. Задачи с интенсивным использованием ЦП лучше решаются в Java World.

Серверный код: Java

Разработка для Android / IOS: поддерживает только разработку для Android на Java. Но Kotlin теперь стал официальным языком Android, и можно подумать, что Android прекратит поддержку Java через несколько лет.

Веб-интерфейс: Java-апплет.

Рабочий стол: Java

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

Еще одна вещь, которую вы должны знать, это то, что у JavaScript есть армия разработчиков с открытым исходным кодом, и любые возможные проблемы программирования, с которыми вы столкнетесь, могут быть довольно легко решены в сообщении stackoverflow. То же самое и для java, но у JavaScript есть больше последователей.

например: в этой статье я говорил только о Java и JavaScript. C #, python и т. Д. Вполне сопоставимы с Java. Если вы выберете Java, вы также можете изучить их.

Если у вас есть вопросы, оставьте конструктивную критику в комментариях. Благодарность :)

Ссылки: