Старичок Java: стабилен и перспективен

20

2013-11-13

Старичок Java: стабилен и перспективенПрошло уже почти 19 лет с тех пор, как на свет появился язык Java. Сейчас современные разработчики могут выбирать для себя язык, как в супермаркете: Node.js, Objective-C, Dart, Go… И часто от молодых специалистов можно услышать несколько снисходительное: «Java? Он что, ещё жив?».

Жив, да. Если посмотреть результаты поиска по вакансиям на крупнейшем зарубежном работном ресурсе Dice.com, по запросу Java вы получите более 17 000 результатов, а по запросу iOS — около 2 500. На Indeed.com по запросу Java выдаётся более 60 000 (!) результатов. Ресурс ITmozg по запросу Java выдаёт более 3 000 позиций, по запросу iOS — около 500. HH.ru, также один из основных ресурсов по поиску работы в России и СНГ, по запросу Java выдаёт около 2 800 позиций, по запросу iOS — 800.

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

Может быть, дело в том, что Java позволяет построить свой бизнес-план, а не скидывание 30 процентов прибыли компании Apple и скрещивания пальчиков в надежде, что приложение попадёт в топ-25. Java является основой для множества платформ, созданных для эффективной работы ПО на многоядерных процессорах. Java — это решение для программистов и на клиентской, и на серверной стороне, и для разработчиков встроенных систем.

Почему Java доминировал, доминирует и будет доминировать?

  • Устойчивость к другим агрессивным политикам.

Самым большим врагом Java был Microsoft со своей реализацией JVM. Тесная интеграция Java с DCOM и Win32 ломала многоплатформенную суть языка. Sun тогда неоднократно обвиняла Microsoft в дискредитации платформы JVM.

Apple вообще всегда игнорировал Java. IBM любил Java, но воевал с Sun.

Несмотря на всё это, Java продолжал жить и расти.

  • Магия процессов.

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

  • Java как первый язык программирования.

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

  • Кроссплатформенность.

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

  • Стабильный успех на мобильных платформах.

Android построен на Java от макушки до пяток. Лёгкая версия языка и VM (Java ME) использовалась до этого на предшественниках современных смартфонов.

  • Blu-ray.

Стандарт Blu-ray построен вокруг Java. Если вы хотите добавить контент на Blu-ray диск, вам придётся достать версию Javac компилятора.

  • Фигурные скобки.

Любители модных языков вроде Ruby, Python или CoffeeScript частенько свысока смотрят на Java-программистов, которым приходится использовать фигурные скобки, начиная и заканчивая ими каждый кусок кода. Для этих ребят использование круглых, квадратных, фигурных скобок — просто наказание какое-то. Но на самом деле перемены в пунктуации не приводят к простоте. Когда пишешь на Python, начинаешь считать и пересчитывать отступы. Если язык программирования напоминает английский, это не значит, что его синтаксис так же прост, как синтаксис английского предложения.

  • Плагин Groovy.

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

  • JVM.

JVM создавалась как программа, обрабатывающая байтовый код и передающая инструкции оборудованию как интерпретатор. Вскоре разработчики поняли, что JVM может обрабатывать и код на других языках. Разработчики на Haskell, Scala, Clojure стали пользоваться JVM. Microsoft взял эту идею при создании C# и её виртуальной платформы.

  • Революция в NoSQL.

Когда-то давно база данных представляла из себя этакий чёрный ящик, который хранил информацию и быстро отвечал на запросы. Затем произошла революция NoSQL, и программисты поняли, что они могут писать свою базу данных и подгонять код под свои потребности. Большая часть наиболее значимых инструментов NoSQL написана на Java: Cassandra, Lucene, ElasticSearch, HBase, Neo4J.

  • Minecraft.

Он написан на Java. Дети и юноши, играющие в Minecraft, учат Java, чтобы писать свои плагины. Это огромное подспорье для следующего поколения Java-программистов.

  • Open source.

Sun всегда была лидером опен-сорса, хотя не спешила с релизом Java. Про Apache и говорить не стоит.

Помимо чисто технических и исторических преимуществ, есть ещё и рыночные доказательства доминирования Java. В большинстве вакансий Senior-специалистов среди требований указано знание Java.

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

serverside-report1.png

Последний ноябрьский рейтинг TIOBE очень наглядно демонстрирует относительно ровный спрос на Java в течение десятилетия.

evolutionTIOBEoct2013.jpg

Безусловно, такой спрос сказывается на зарплатах Java-специалистов. Ниже — данные о средних зарплатах Java-программистов России в пяти городах с наиболее развитым IT-рынком. Зарплата указана в рублях. По данным ITmozg.

  Москва Санкт-Петербург Новосибирск Екатеринбург Нижний Новгород
Junior 40 000 30 000 20 000 25 000 20 000
Middle 70 000 50 000 40 000 45 000 30 000
Senior 150 000 125 000 85 000 95 000 70 000

На графике ниже — сравнительный анализ средних зарплат в Москве в зависимости от языка программирования. В других городах соотношение остаётся приблизительно таким же.

graphsalarymoscow.jpg

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

Автор: Люся Ширшова. Материал подготовлен по статье InfoWorld.com, данным TIOBE и ITmozg.

Актуальные вакансии Java-программистов можно посмотреть здесь.