Java и JavaScript – разные языки программирования, причем – совсем разные: Java в основном используется на бэкенде, а JS – на фронтенде; Java позволяет написать приложение хоть для мультиварки (в теории), JS почти всегда ограничивается браузерами; Java в основном востребована в энтерпрайзе с легаси, приложения для JS нередко приходится писать с нуля. Ниже – более детальный разбор этих двух языков и ответ на вопрос из заголовка.
Если верить Википедии, то Java – это строго типизированный объектно-ориентированный язык общего назначения. На случай, если вам из этого набора слов понятно только слово «язык», поясним:
Java – наследник C/C++, «улучшенная версия», которая существенно упрощает разработку по сравнению с C-подобными языками и исключает возможность многих ошибок за счет своей повернутости на классах и исключениях: все должно описываться в терминах ООП, любая потенциальная ошибка должна быть заключена в try-catch (механизм отлова исключений), иначе компилятор будет ругаться.
Отличается Java от других языков и своей гибкостью в плане платформ – наверное, даже Python до сих пор не может конкурировать с Джавой по этому показателю. Дело в том, что в Java используется JVM – прокладка в виде виртуальной машины. Эта виртуальная машина лучше вас (и 99.99% разработчиков на Java) знает, как работать с железом, на котором она установлена, то есть эту задачу с вас полностью снимают – вам остается только написать код, если код компилируется – вы передаете скомпилированный файлик машине, и код работает. То, что приложения выполняются на JVM, позволяет разработчику писать код вообще для любого устройства – код выполняется вне зависимости от того, написан он для микроволновки, мобильного приложения или сервера (конечно же, в выполнении кода должна быть своя логика, вряд ли у сервера будет встроенная функция «разогреть»). К слову, этот плюс является и минусом – поскольку код выполняется виртуальной машиной, а не напрямую железом, у Java падает производительность из-за дополнительного звена в цепи.
Когда Java только появилась на мировом рынке, особых конкурентов по удобству и эффективности у нее не было, поэтому язык «расползся» по всем сферам, и особенно его оценили в сфере бэкенда – то есть его начали активно использовать для разработки серверных приложений. В том числе он стал популярен в компаниях, приложениям которых на данный момент уже по 10-20 лет, и отсюда проистекает сфера, в которой он чаще всего используется – энтерпрайз, то есть крупные компании + разработка приложений, которая длится десятилетиями. Да, на энтерпрайзе сфера применения не заканчивается, у Java фреймворки уже развились настолько, что могут тянуть и весь спектр задач фронтенда (в автоматизированном тестировании Java тоже востребована) – но если вы будете искать работу на позиции Junior Java Developer, в 80% случаев вакансии вам будут попадаться именно от энтерпрайза.
О JS Википедия говорит более сдержанно: «мультипарадигменный язык программирования». У него – динамическая слабая типизация, набор поддерживаемых парадигм не ограничивается ООП (можно оперировать как объектами, так и отдельными переменными), а использование в основном ограничено вебом и фронтендом – JavaScript отлично интерпретируется браузерами. И именно последний факт делает JS таким популярным – чем больше сайтов в мире становится, чем больше JS-разработчиков нужно, потому что ни один уважающий себя сайт сейчас не обходится без скриптов и интерактивных элементов – а они в 99% случаев пишутся именно на JS.
Важно, что JavaScript тоже «умеет в» серверную часть – для JS существует фреймворк Node.js, который, в отличие от «оригинального JavaScript», полностью заточен под бэкенд. На самом деле Node.js стоило бы считать отдельным языком (а скорее – даже технологией), потому что у Node.js и своя логика, и своя специфика, и свой, более строгий язык TypeScript, который расширяет стандартный JS. Но вам, как выбирающему между языками, эта информация важна по другой причине: если вы научитесь делать фронтенд на JavaScript, вам затем будет проще доучить Node.js (потому что вы знаете базу) и переквалифицироваться либо в бэкенд-разработчика, либо в фулстэка.
Различия между Java и JavaScript в таблице:
Java |
JS |
|
Где используется |
В основном – бэкенд, хотя при большом желании можно найти работу в любой сфере |
В основном – фронтенд, можно найти работу в бэкенде (Node.js) |
Сложность синтаксиса |
Высокая – нужно изучить не только базовые конструкции и типы переменных, но еще и основы ООП |
Низкая – первый скрипт напишете минут через 10 |
Какие инструменты нужны для начала обучения |
JVM, Developer Kit, IDE |
Блокнот и браузер |
Подходит для быстрого написания скриптов? |
Нет |
Да |
Поддерживает многопоточность? |
Да, «из коробки» |
Да, но нужно устанавливать дополнительные инструменты и разбираться в них |
Насколько популярен? |
9.6% в рейтинге TIOBE |
3.71% в рейтинге TIOBE |
Если вы совсем не умеете программировать – однозначно JavaScript. JS – крайне легкий язык со слабой динамической типизацией, поэтому вам не придется заморачиваться с приведением типов данных и другими проблемами, которые у новичка могут отнять часы на понимание и исправление. Кроме того, для того, чтобы запустить код на JS, нужен только браузер – он у вас есть.
А вот если вы уже немного умеете программировать, то ответ будет не таким однозначным. Да, JS – проще по синтаксису и структуре, но вам может захотеться погрузиться в программирование немного глубже – до ООП, например. И здесь Java выигрывает – на этом языке вы поймете, как ООП работает на практике, научитесь проектировать довольно сложные приложения, разберетесь с интерфейсами и улучшите свои навыки отлова ошибок. Кроме того, строгая типизация здесь станет плюсом, потому что вы научитесь следить за типами данных – это вам в дальнейшем поможет и в JS, если вы решите переключиться на него. Возможно, вы даже сможете понять вещи, которые ломают голову новичкам, изучающим JS (но это не точно):
Сравним языки по параметрам:
Java |
JS |
|
Востребованность |
9.6% в рейтинге TIOBE |
3.71% в рейтинге TIOBE |
Зарплата |
Медианная зарплата у junior по версии GetMatch – 100к рублей |
Медианная зарплата у junior (frontend) по версии GetMatch – 87к рублей |
Порог входа |
Java Core, 1 фреймворк на выбор (обычно Spring) |
Основы JS, понимание DOM-модели, HTML, CSS |
Точка входа |
Крупные энтерпрайз-компании |
Любая компания |
Что выходит? Java на текущий момент все же более востребована и junior-разработчикам платят немного больше, но нужно учить фреймворк (что может быть сложнее, чем выучить сам язык) и вы в основном будете ограничены крупными компаниями – найти подработку или стартап для опыта будет крайне сложно.
Не существует однозначного ответа на этот вопрос, как бы кто не убеждал вас в том, что «Java научит хорошо программировать» или «c JS проще найти работу». Оба языка имеют свою сферу применения, а также свою специфику: кого-то сильно раздражает свобода JS, кого-то сильно раздражают рамки Java. Джуном вы будете зарабатывать примерно одинаковую сумму, поэтому основной вопрос: что вам больше нравится? Если вы задаетесь вопросом «Что лучше – JavaScript или Java?», то вы не знаете, что вам больше по душе – ну так узнайте. Возьмите по одному бесплатному (или дешевому платному) курсу по Java и JS, пройдите оба – вы пощупаете эти языки и сможете составить о них общее представление. Затем попробуйте сделать простенький проект для бэкенда на Java и простенький проект для фронтенда на JS – за счет этого вы погрузитесь в специфику платформ, с которыми вам предстоит работать в дальнейшем. Где-то на этом этапе вы уже должны понять, что вас привлекает больше, и вопрос отпадет.