logo
Ещё

Что лучше изучать: Java или JavaScript?

Java и JavaScript – разные языки программирования, причем – совсем разные: Java в основном используется на бэкенде, а JS – на фронтенде; Java позволяет написать приложение хоть для мультиварки (в теории), JS почти всегда ограничивается браузерами; Java в основном востребована в энтерпрайзе с легаси, приложения для JS нередко приходится писать с нуля. Ниже – более детальный разбор этих двух языков и ответ на вопрос из заголовка.

Что это за языки вообще

Java

Если верить Википедии, то Java – это строго типизированный объектно-ориентированный язык общего назначения. На случай, если вам из этого набора слов понятно только слово «язык», поясним:

  • Строго типизированный. Основная суть программирования – в манипулировании переменными, и у этих переменных могут быть типы: целое число, десятичное число, символ, строка, булево значение и так далее. «Строго типизированный» означает, что когда вы пишете «a + b = c», все 3 переменные должны быть одного типа – иначе компилятор выдаст ошибку. Строгая типизация существенно уменьшает количество багов, но и существенно усложняет разработку – разработчику нужно постоянно держать в голове типы используемых переменных.
  • Объектно-ориентированный. ООП – это парадигма (набор устоявшихся идей), согласно которой основная логическая единица приложения – объект, и манипулируем мы именно объектами, а не отдельными функциями и переменными. Объект представляет собой какую-то репрезентацию объекта из реального мира – например, мы создаем виртуальный объект «банковская карта», у которого есть поле (переменная) «баланс» и 2 метода (функции) «списать деньги» и «зачислить деньги».
  • Общего назначения. Создавать приложения можно для чего угодно, в теории 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% случаев вакансии вам будут попадаться именно от энтерпрайза.

JavaScript

О 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 или JavaScript?

Не существует однозначного ответа на этот вопрос, как бы кто не убеждал вас в том, что «Java научит хорошо программировать» или «c JS проще найти работу». Оба языка имеют свою сферу применения, а также свою специфику: кого-то сильно раздражает свобода JS, кого-то сильно раздражают рамки Java. Джуном вы будете зарабатывать примерно одинаковую сумму, поэтому основной вопрос: что вам больше нравится? Если вы задаетесь вопросом «Что лучше – JavaScript или Java?», то вы не знаете, что вам больше по душе – ну так узнайте. Возьмите по одному бесплатному (или дешевому платному) курсу по Java и JS, пройдите оба – вы пощупаете эти языки и сможете составить о них общее представление. Затем попробуйте сделать простенький проект для бэкенда на Java и простенький проект для фронтенда на JS – за счет этого вы погрузитесь в специфику платформ, с которыми вам предстоит работать в дальнейшем. Где-то на этом этапе вы уже должны понять, что вас привлекает больше, и вопрос отпадет.

Кратко о главном

  • Java – сложный и строгий язык, который в основном используется в бэкенде крупных компаний.
  • JavaScript – простой и фривольный язык, который в основном используется во фронтэнде как небольших, так и крупных компаний.
  • Эти языки – очень разные, самое близкое сходство у них – в названии.
  • В среднем junior-разработчики получают около 100к рублей в месяц – как Java-разработчики, так и JS-разработчики.
  • Нельзя сказать, что «Java лучше, чем JS» или наоборот – у каждого языка есть своя специфика, плюсы и минусы. Если хотите узнать, что лучше подходит конкретно вам – возьмите по маленькому вводному курсу для каждого языка и пройдите их.