Еще в 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, вы также можете изучить их.
Если у вас есть вопросы, оставьте конструктивную критику в комментариях. Благодарность :)
Ссылки: