Обучение

Язык программирования Java: особенности, популярность, ситуация на рынке труда

По результатам ежегодного отчёта State of the Octoverse, который выпускает Github, язык программирования Java в 2019 году занимает третье место в списке самых популярных. В этой статье поговорим об этом языке: рассмотрим его особенности, сферы применения, узнаем о ситуации на рынке труда. Известные в отрасли эксперты поделятся мыслями о перспективах развития и целесообразности Java.

Краткая теория: особенности и сферы применения Java

Java разработала компания Sun Microsystems в начале 90-х годов XX века. Ведущую роль в создании языка сыграл канадский инженер Джеймс Гослинг (James Gosling). На ранних этапах разработки язык назывался Oak. Затем его переименовали в честь сорта кофе Java. Связь языка с напитком отражается в логотипе.

Джеймс Гослинг и его единомышленники хотели создать язык с си-подобным синтаксисом. В то же время он должен быть более простым по сравнению с C/C++. Создатели планировали использовать Java для программирования бытовой электроники. Однако практически сразу после выпуска версии 1.0 в 1995 язык стали использовать разработчики серверного и клиентского ПО.

Название языка читается как «джава». Однако русскоязычные пользователи в разговорной и даже в письменной речи иногда говорят «язык программирования ява». Это один из примеров использования сленга.

В 2010 году компанию Sun Microsystems купила Oracle. После этого Джеймс Гослинг перешёл в Google, откуда тоже вскоре уволился.

Особенности языка Java

Java — язык программирования общего назначения. Относится к объектно-ориентированным языкам программирования, к языкам с сильной типизацией.

Java является объектно-ориентированным языком, относится к языкам программирования с сильной типизацией.

Создатели реализовали принцип WORA: write once, run anywhere или «пиши один раз, запускай везде». Это значит, что написанное на Java приложение можно запустить на любой платформе, если на ней установлена среда исполнения Java (JRE, Java Runtime Environment).

Эта задача решается благодаря компиляции написанного на Java кода в байт-код. Этот формат исполняет JVM или виртуальная машина Java. JVM — часть среды исполнения Java (JRE). Виртуальная машина не зависит от платформы.

В Java реализован механизм управления памятью, который называется сборщиком мусора или garbage collector. Разработчик создаёт объекты, а JRE с помощью сборщика мусора очищает память, когда объекты перестают использоваться. Объясняет эксперт Никита Липский: «Есть такое понятие — циклический мусор. Внутри цикла на все объекты есть ссылки, однако garbage collector в Java удалит его, если объекты не могут использоваться из программы».

Как отмечалось выше, синтаксис языка Java похож на синтаксис других си-подобных языков. Вот его некоторые особенности:

  • чувствительность к регистру — идентификаторы User и user в Java представляют собой разные сущности;
  • для именования методов используется lowerCamelCase. Если название метода состоит из одного слова, оно должно начинаться со строчной буквы. Пример: firstMethodName();
  • для именования классов используется UpperCamelCase. Если название состоит из одного слова, оно должно начинаться с прописной буквы. Пример: FirstClassName.
  • название файлов программы должно точно совпадать с названием класса с учётом чувствительности к регистру. Например, если класс называется FirstClassName, файл должен называться FirstClassName.java;
  • идентификаторы всегда начинаются с буквы (A-Z, a-z), знака $ или нижнего подчёркивания _;

Ближе познакомиться с синтаксисом Java можно на нашем бесплатном ресурсе Code Basics, где есть вводный курс.

Что пишут на языке Java: сферы применения

Выше отмечено, что Java относится к языкам программирования общего назначения. Новичкам интересно знать, что конкретно пишут Java-программисты, чтобы определиться с выбором языка.

По данным компании Oracle, программы на Java запускаются на 3 млрд девайсов. Именно такое сообщение можно увидеть в окне установки.

3 млрд девайсов и джава

Маркетинговое сообщение в окне установки Java


Это маркетинговое сообщение сложно проверить. Тем не менее Java широко используется и входит в число самых востребованных языков, это не вызывает сомнения.

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

На Java написано много веб-приложений. Популярные фреймворки, в том числе Spring, Stuts, JSP, используются для создания разных приложений в вебе: от ecommerce-проектов до крупных порталов, от образовательных платформ до правительственных ресурсов.

Популярная компьютерная игра Minecraft написана на Java.

Мобильная разработка — ещё одна область использования Java. На этом языке пишут приложения для устройств, работающих под управлением ОС Android.

На Java создают клиентские приложения. Простой и близкий разработчикам пример: IDE NetBeans написано на «джаве».

Также Java применяется для работы с Big Data, разработки программ для научных целей, например, обработки естественных языков, программирования приборов — от бытовых девайсов до промышленных установок.

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

Промежуточный итог: Java — язык программирования общего назначения. Имеет си-подобный синтаксис. Используется для создания приложений в разных областях: от веба до разработки игр, от мобильного ПО до программ для корпораций и научных институтов.

Популярность Java

Вы уже знаете, что по результатам рейтинга State of Octoverse 2019 Java входит в тройку самых популярых языков программирования. «Джава» опережает по популярности PHP, C#, C++, TypeScript и другие востребованные языки, а уступает только JavaScript и Python.

популярность языков программирования

Самые популярные языки программирования по данным State of Octoverse 2019


Справка: рейтинг State of Octoverse рассчитывается по количеству репозиториев на соответствующем языке, которые хранятся на GitHub.

По данным индекса TIOBE на ноябрь 2019 года, Java — самый популярный язык программирования. TIOBE — индикатор популярности языков программирования, который рассчитывается по сложной методике с учётом количества поисковых запросов, относящихся к тому или иному язку.

В рейтинге RedMonk Java занимает второе место, уступая JavaScript и опережая Python. Этот рейтинг рассчитывается на основе количества репозиториев на GitHub, как и State of Octoverse, однако методика ранжирования здесь отличается. Например, RedMonk не учитывает в расчётах форки репозиториев.

Вывод по итогам раздела: Java входит в тройку самых популярных языков программирования. По данным разных рейтингов, этот язык занимает места от первого до третьего.

Зарплата Java-программистов

По данным сервиса «Мой круг» на первое полугодие 2019 года, медианная зарплата программиста на Java составляет 120 000 рублей в месяц. Джависты зарабатывают больше программистов на Python, JavaScript и PHP.

зарплаты программистов джава

Медианные зарплаты в разрезе языков программирования, данные «Мой круг» на первое полугодие 2019


По информации агентства NewHR, средняя зарплата программиста Java уровня middle в Москве составляет 150 - 200 тыс. рублей. Речь идёт о сумме, которую специалист получает на руки после уплаты налогов.

Работа для Java-программистов есть не только в столице. Например, по соответствующему запросу на сайте hh.ru для региона «Казань» нашлось 137 вакансий. Вилка зарплат составляет от 30 000 до 200 000 рублей в месяц.

alt_text

Работа для джавистов есть и в регионах, и в столице


Легко ли выучить Java

Язык Java считается дружественным для начинающих. Он не такой лаконичный, как Python. Однако создатели Java стремились сделать язык простым и лёгким для изучения, как и создатели Python.

Читайте также: наш студент изучил Java с нуля за 6 месяцев и устроился на работу. Это был его первый язык программирования.

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

Эксперты о выборе языка и перспективах Java-программистов на рынке труда

Мы попросили известных в отрасли специалистов поделиться взглядами на целесообразность изучение Java и перспективах начинающих джавистов на рынке труда.

Вячеслав Ковалевский: человечество не сможет отказаться от Java

Ковалевский

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


1. По вашему мнению, почему новичкам стоит изучать Java?

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

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

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

Надо понимать, что Java — объектно-ориентированный язык. Это может сужать понимание других парадигм. Но Java меняется в сторону поддержки разных парадигм программирования.

2. Будет ли этот язык востребован в будущем?

Попытки вытеснить Java есть. Oracle монетизирует Java, поэтому энтерпрайз будет уходить от этого языка в новых проектах. Например, в мобильной разработке набирает популярность Kotlin, это несложный язык.

Стоит помнить, что Java — язык и виртуальная машина. Виртуальная машина никогда не умрёт. Тот же Kotlin компилируется в байт-код, который исполняет JVM. Да, можно пересесть на Scala, Kotlin, Go. Но в целом непонятно, куда податься с Java и надо ли куда-то подаваться. То есть язык будет востребованным, как минимум будет нужна поддержка того, что уже написано на Java.

3. Каковы перспективы Java-разработчика на рынке труда?

Как я уже говорил, Java — это большие компании или Android-разработка. Бэкенд-разработка на Java — это тоже зрелые большие компании. Большие деньги в легаси, в старом софте, который генерирует выручку.

Язык адаптирован банками, крупными финансовыми компаниями. Банковский софт традиционно пишут на Java. Соответственно, перспективы трудоустройства для Java-программиста в крупных компаниях или в компаниях, которые обслуживают крупные компании.

4. Что новичку нужно знать об особенностях Java и направлениях развития этого языка?

Новичок должен понять, какая Java его интересует. Хочет писать мобильные приложения для Android? Это другая виртуальная машина, нужно её изучать. Хочет писать бэкенд? Нужно изучать высокоуровневые фреймворки: Spring, Java EE.

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

Ещё надо понимать, что Android отстаёт на несколько версий Java.

5. Если отбросить маркетинговые обещания, сколько времени придётся учиться с нуля до уровня джуниора?

Надо понимать, что интервью джуниора — это в общем случайность. Нет стандартов таких интервью. Обычно собеседование проводит мидл или даже такой же джун. Он задаёт каверзные вопросы и просит решить задачи. Если человек вчера посмотрел урок, связанный с вопросом или с задачей, он всё решит.

Итак, считаю собеседования необъективными, а их результат случайным. Потенциальный кандидат может увеличить вероятность успеха. Для этого надо учиться, учиться и ещё раз учиться.

Некоторым людям для обучения нужны годы, некоторые справляются за 2 месяца. Чётко определённого времени нет. В среднем на обучение уходит полгода. Или 2-3 месяца обучения фултайм.

Ключ к успеху — практика, свои проекты, опенсорс. Также надо знать английский язык.

Если нужен быстрый вход в разработку, надо изучать Java и делать Android-приложения. Такую возможность сложно найти в других направлениях.

Николай Алименков: перспективы Java-разработчиков на рынке труда очень радужные

Алименков

Практикующий Java TechLead и Delivery Manager, независимый консультант. Разрабатывает на Java больше 15 лет, специализируется на сложных распределенных системах. Эксперт в Java, Agile, архитектуре, инженерных практиках, продуктовой разработке и обеспечении качества. Докладчик многих международных конференций. Основатель XP Injection и международных конференций JEEConf, XP Days Ukraine, Selenium Camp. Канал в Telegram


1. По вашему мнению, почему новичкам стоит изучать Java?

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

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

2. Будет ли этот язык востребован в будущем?

Я думаю, в ближайшем будущем (5-7 лет) Java в плане востребованности ничего не угрожает. И тут дело даже не в языке, а в той экосистеме, которая выросла вокруг Java и JVM. Это бесконечное количество фреймворков, инструментов и библиотек практически под любую задачу, которая может прийти в голову.

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

Да и Java не стоит на месте. Сейчас действует стабильная система релизов новых версий языка каждые полгода и разработчики начали получать возможности, которые давно есть в других языках программирования (var, pattern matching, текстовые блоки, легковесные потоки и так далее). То есть язык все больше подстраивается под современные реалии и требования.

3. Каковы перспективы Java-разработчика на рынке труда?

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

Из особенностей я бы отметил разве что нарастающее количество legacy продуктов в энтерпрайз-мире, которые заказчики хотят переписывать и обновлять под новые архитектурные веяния. За это неплохо платят, но работа не всегда сильно интересная. Ведь приходится разбираться и копаться в весьма старых технологиях, а процесс перехода зачастую болезненный и очень неторопливый.

4. Что новичку нужно знать об особенностях Java и направлениях развития этого языка?

Новичку пожалуй нужно понимать, что сам язык — это лишь верхушка айсберга. Java очень простой язык с точки зрения синтаксиса, потому что очень медленно эволюционировал в прошлом. И есть огромное количество учебных материалов, чтобы быстро его освоить.

Но вот потом начинается самое интересное, ведь направлений разработки в Java экосистеме большое множество:

  • энтерпрайз мир с Java EE (теперь Jakarta EE);
  • Spring и все что построено за долгие годы вокруг него;
  • мобильная разработка под Android;
  • веб-разработка с множеством готовых платформ;
  • реактивное направление и т.д.

И каждое из направлений весьма глубокое, охватить все сразу не хватит ни времени ни возможностей.

Ну и еще новичку стоит знать о том, что на базе JVM есть альтернативные языки как Kotlin или Groovy. Они выглядят куда более адаптированными под реалии современного мира разработки за счет отсутствия legacy «задолженностей» обратной совместимости.

5. Если отбросить маркетинговые обещания, сколько времени придётся учиться с нуля до уровня джуниора?

Как я уже говорил, выучить сам язык можно достаточно быстро. А вот для полноценного погружения в выбранное направление и изучение фреймворков, инструментов и практик в нем понадобится от полугода до года. Это если человек не имеет опыта работы с другим языком программирования и пришел учиться с нуля. Процесс может ускорить наличие хорошего ментора, который будет помогать развиваться быстрее и на практических задачах, не оторванных от реального мира разработки. Тогда можно уверенно вложиться в 3-6 месяцев интенсивного обучения.

Никита Липский: Java на рынке труда надолго

Липский

Никита работает в исследовательском центре Хуавей над JVM, компиляторами и новыми языками программирования. Также известен как ключевая фигура в проекте Excelsior JET — виртуальная машина Java со статическим (AOT) компилятором


1. По вашему мнению, почему новичкам стоит изучать Java?

Новичкам нужно начинать с основ — с алгоритмов и структур данных. Язык вторичен, но если основа есть, не составит труда выучить любой. Для кругозора стоит пожалуй разбираться в нескольких языках. Новичкам рекомендую ознакомиться с C/LISP/Java/Python. А далее уже понять к чему больше душа лежит.

2. Будет ли этот язык востребован в будущем?

Java, конечно, еще долго будет востребована. Пока ничего, что бы ее могло заменить, нет.

3. Каковы перспективы Java-разработчика на рынке труда?

Перспективы Java на рынке труда? Почитайте вакансии — всё станет понятно. Java на рынке труда надолго.

4. Что новичку нужно знать об особенностях Java и направлениях развития этого языка?

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

5. Если отбросить маркетинговые обещания, сколько времени придётся учиться с нуля до уровня джуниора?

Если есть основы, мотивация, хорошая и интересная задача для начала, которую хочется решить, то освоить язык вполне можно за полгода.

Заключение

Java входит в тройку самых популярных языков программирования. У Java-разработчиков отличные перспективы на рынке труда. Кроме того, труд джавистов оплачивается выше, чем труд разработчиков на JavaScript, PHP и Python. Если у вас есть вопросы по особенностям изучения Java, задавайте их в комментариях.

Дмитрий Дементий 18 ноября 2019
Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Node, PHP, Python и Java.

Хекслет

Подробнее о том, почему наше обучение работает →