Что приходит на смену java
У JAVA есть будущее?
Будущее за вот чем. Скорость разработки + эффективность программ (тут я подразумеваю и скорость обработки данных, отсутствие вещей усложняющих разработку при увеличении объёмов приложений и информационное обеспечение разработчиков, коммьюнити, документация,другие ресурсы). Те технологии, которые будут давать это, будут лидерами, тормозить будут такие вещи только, как страх менеджеров и легаси.
Появляются новые языки и технологии, которые соответствуют и ускорению разработки с сохранением эффективности программ, но всё на них не поставишь, потому как на работу устроиться трудно, зная только, например, Go.
Посему, надо иметь базу, в виде JavaScript, Java, Python, Ruby, C++ или других языков и сопутствующие им технологии, которые уже во всю используются, но нельзя забывать, что когда-нибудь наступит момент, когда что-то перевернётся, и 10-20% времени, которое вы тратите на обучение себя, стоит тратить на что-то новое. Может наступить момент, когда, например, вдруг понадобятся всем Rust-программисты. Такое вполне возможно, и когда эта волна пойдёт, вы будете в теме, уже!)))
Так что, есть ли у Java будущее? Я думаю, что это будущее будет похоже на судьбу языка Cobol. Он долго не умирал. Java тоже не скоро умрёт. Но насколько интересно будет работать с ней?
Когда Java наконец помрёт, что с этим делать и что будет с JPoint
Один из важнейших вопросов интернета — «Когда же наконец джава помрёт?»
Почему это важно нам как Java-разработчикам? Очевидно, если Java вдруг начнёт тонуть, нужно побыстрей сбежать с тонущего корабля. А если наоборот, начнёт всплывать — переобуться на ходу и грести с удвоенной силой. Давайте посмотрим, что там творится.
Каждую неделю при подготовке дайджеста мы систематически анализируем огромное количество новостей про Java. Постоянно встречаются результаты всевозможной аналитики популярности языков программирования. Java никогда не выпадала из топа даже у самых упоротых, которые делают эти списки или пишут статьи только чтобы показать преимущество технологии, которую они продают.
Может ли автор JUG-а писать о таких рейтингах? Вспомним последнюю историю с «Яндекс.Радаром», когда Mail.Ru назвала «абсурдным» рейтинг сайтов от «Яндекса» и потребовала удалить из него свои бренды. Вроде как, когда сам являешься игроком на рынке, некорректно вести документы, подразумевающие максимальную объективность.
У людей есть некое подсознательное понимание, что скорее всего, суть таких действий — информационно-паразитическая. Если у рекламщика есть какой-то топ, в него нужно срочно впихнуть свой продукт — неважно, честно он там оказался или нет.
Парадокс с Java в том, что всех, похоже, устраивает текущее положение вещей и её позиция. Нет смысла в отсебятине. Спор о выборе мажорной технологии вроде Java против C#, C++, JavaScript или Python среди серьезных разработчиков может происходить разве что в шутку, ибо у каждой технологии выработалась своя ниша и свой собственный путь, победить в котором с помощью другой технологии — задача титаническая.
Машина локального времени
Забавно наблюдать, как идёт Java по своему Пути. Большинство из нас — простые разработчики, и, не имея доступа ко внутренней кухне проектов вроде JDK, мы можем наблюдать прогресс как цепочки новых версий платформы, фреймворков и фичей в них по ежедневной ленте на Хабре, по программе конференций и так далее.
Взглянем на нашу персональную машину времени — историю хаба Java. Не знаю, как посмотреть это проще, поэтому взял строку https://habr.com/hub/java/pageN/ и стал увеличивать N.
Для сравнения, в том же сентябре Rust вскарабкался на очередной локальный максимум хайпа, и вышла отличная статья «Concurrency паттерны в Rust из Java», которая собрала бы куда больше, чем +33, если бы читатели действительно понимали суть написанного. Зачастую крутые посты оканчивают жизнь в закладках, так как требуют вдумчивого чтения. Она интересна ещё и тем, что ссылается на «Близкие контакты JMM-ной степени» — сумму целой эпохи докладов про JVM concurrency.
На N=115 я внезапно обнаружил свою статью про «Крипту» 2016 года и сейчас не понял в ней ни одного слова. Серьезно, что это за чушь? Что характерно, эта объективно чудовищно плохо написанная статья за годы существования сгенерила десятки панических комментариев в личку.
Сейчас мы можем взять две фичи, разделённые пропастью версий между Java 8 и Java 10 и скомбинировать вместе с помощью JEP-323, появившегося в Java 11 всего пару месяцев назад. Видите, теперь можно писать var внутри параметров стрима — мелочь, а приятно:
Машина глобального времени
Взглянем вперёд на конференции, которые отмечают глобальный поток событий. Этой весной на FOSDEM 2018 Марк Рейнхолд впервые анонсировал частые релизы и бесплатные открытые версии JFR, JMC и AppCDS:
Я тоже там был и вместе с ARG89 старался завербовать Марка:
Если честно, для меня эти полгода от прошлого FOSDEM прошли как один длинный-длинный день. Вроде бы очень устал и хочется поспать, но впереди слишком много всего.
Меньше месяца назад на Oracle Code One был новый большой кейноут, «The Future of Java Is Today».
Очень рекомендую посмотреть это видео, даже несмотря на длину в полтора часа. Хотя бы за чудесный момент, когда Марк кодит на Emacs демки для Valhalla. Если кто-то спросит, можно ли программировать на чём-то кроме IntelliJ IDEA… похоже, иногда можно. По крайней мере, если у тебя главный джава-кейноут в мире.
Вкратце, что там было:
Вперед к JPoint!
Посмотрим, какие темы интересуют российское Java-сообщество сегодня.
На протяжении многих лет JUG.ru Group делает Java-конференции, и мы кое-что понимаем в этом вопросе. Во многом они ничем не уступают большим международным событиям вроде оракловских конференций. На последнем Джокере были совершенно мозговыносящие вещи, например, на доклад Паньгина собралось, кажется, больше тысячи человек одновременно.
Как это получается? История Java-конференций в России — это история следования мировым трендам, история вклада в Java-сообщество. Фокус в том, что программа каждой действительно хорошей конференции должна учитывать всё, что было, есть и будет в Java-мире в самое ближайшее время. Это и отражение действительности, и сама по себе веха в глобальной картине всего.
Наступает новый год, и настало время объявить, что мы делаем новый JPoint, который пройдёт 5-6 апреля 2019 года. Это крупнейшая конференция, которая станет зеркалом событий российского и международного Java-сообщества.
Ссылка на сайт ведёт на десктопную версию. Мобильной версии пока нет, она появится на следующей неделе.
Пока что разработка JPoint находится на самой ранней стадии, и мы хотели бы поделиться, какие темы кажутся наиболее популярными.
Короткий список таков:
По сути, темы, касающиеся low level и перформанса, ждут всегда — кто по чисто рабочим причинам, кто из-за любопытства. Всё остальное зависит от текущей конъюнктуры, положения вещей и событий в Java-мире.
Например, огромный успех развил Project Reactor и другие проекты в этом направлении. Если когда-то все хотя бы краем уха слышали про функциональщину, теперь настоящий бум на реактивщину — такой, какой функциональщине и не снился. Венкат Субраманиам, один из самых известных джава-спикеров и наш докладчик, недавно давал интервью ровно на эту тему:
«Когда меня спрашивают, принадлежит ли будущее функциональному программированию, я отвечаю — нет, оно принадлежит реактивному программированию. Потому что для меня реактивное программирование — это функциональное программирование++»
Отличный способ как-то повлиять на состав программы — оставлять нам обратную связь, в том числе — писать комментарии на Хабре. Мы прислушиваемся не только к мнению Венката, но и ко всем, кому есть чего рассказать.
Но есть способ лучше, чем просто писать комментарии.
Call for Papers
«Люди часто просят меня рассказать о будущем, в то время как всё, что я хочу — изменить его. Даже лучше, построить это будущее. Предсказывать очень просто, в конце-то концов. Ты смотришь на людей вокруг, на улицу, по которой идёшь, вдыхаешь воздуха поглубже — и предсказываешь, что в будущем будет всё то же самое, но куда больше. К чёрту «больше». Я хочу «лучше»». — Рэй Брэдбери
Самый простой способ изменить что-то в Java-мире — это взять и самостоятельно его улучшить.
В плане конференций, можно прийти на новый JPoint с собственным докладом. Помните форму обратной связи, которая заполняется после конференции? В ответ на вопрос «кого позвать делать доклад в следующий раз?» многие отвечают «меня».
Программные комитеты читают совершенно все заявки и внимательно их рассматривают. Да, в списке спикеров много известных личностей, но попасть туда вполне возможно. Придётся, конечно, здорово поработать и над содержанием, и над подачей, но вам будут помогать люди, которые в этом хорошо разбираются.
Есть вполне конкретные критерии принятия доклада, которым можно просто соответствовать. Есть конкретный процесс, который начинается приёмом заявки и заканчивается выступлением на конференции.
Чтобы начать своё путешествие как спикер, нужно перейти по ссылке, всё там внимательно прочитать и сделать как написано. ССЫЛКА.
Возвращаясь к теме этого хабрапоста, тема должна быть актуальна, соответствовать сегодняшнему дню и течению времени. Если вы попробуете рассказать об использовании апплетов и портлетов в легаси-системах, это может показаться странным. Да, такие доклады регулярно подаются. Что интересней — портлеты или реактивщина? О чём бы вы хотели услышать? Напишите в комментариях!
Заключение
Мы стоим на пороге большого будущего.
На пороге большого скачка в Java-технологиях, который основывается на успехах массово используемых проектов вроде Spring, быстром выпуске новых версий JDK, развитии рантаймов (в том числе совершенно особых, вроде GraalVM или Excelsior JET), важных течений в них (Valhalla, Panama, Loom), распространении на новых аппаратных платформах (привет, Bellsoft) и многом другом.
Хорошая новость в том, что, похоже, Java живее всех живых. И мы приложили к этому руку!
За Oracle JDK нужно будет платить. Какие теперь варианты?
Споры об актуальности Java продолжаются. Одни твердят о том, что она отживает свое и на смену приходят более усовершенствованные языки. Другие не соглашаются, ссылаясь на количество специалистов, которые из года в год выбирают Java своим профильным навыком. В любом случае, нельзя игнорировать тот факт, что большинство уже существующего программного обеспечения написаны на Java, да и заказчики, как внутренние, так и внешние, продолжают его использовать. В такой ситуации любые новые внедрения и глобальные новости о Java обходить стороной не стоит. Питер Верхас, ведущий разработчик и архитектор ПО в швейцарском офисе EPAM, поделился своим анализом того, какие изменения вводит Oracle и как это повлияет на нас с вами.
В последнее время в Java произошло много изменений, и похоже, что коренным образом изменилось то, как язык будет развиваться дальше. Хорошо, что в языке появляются новые возможности. Но это не единственные перемены. Oracle внесла существенные изменения в модель поддержки и цикл обновления версии Java, которые выпускает эта компания. Все это привело к возникновению большой путаницы, причиной которой стали перемены, дезинформация и непонимание. В этой статье я резюмирую все, что нужно знать пользователям о нововведениях, прежде чем они начнут верить в наступление апокалиптического конца Java-экосистемы.
Однако вначале нужно прояснить некоторые моменты.
Oracle владеет Java, но Java — это не Oracle. Исходный код Java выпущен в лицензии GPLv2.0 с classpath exception. На деле это означает, что кто угодно может использовать и вносить изменения в исходный код языка бесплатно. Есть только одна вещь, которую запрещено делать всем, включая Oracle: вносить изменения в код и публиковать его с закрытой исходной лицензией. Это означает, что коммерческое использование Java, только платной версии, юридически невозможно, даже если этого потребуют маркетинговые или бизнес-интересы Oracle. Но я все-таки технический специалист. Для того, чтобы разобраться с этим моментом на 100% лучше всего загрузить текст GPLv2-лицензии и проконсультироваться с юристом.
Oracle – не единственная компания, которая выпускает сборки Java и занимается поддержкой, есть много других вендоров. Конечно, Oracle, как основной игрок, инвестирующий больше всего в развитие языка и инструментов, является самой престижной коммерческой компанией по его поддержке.
Фактически, у Oracle нет эксклюзивных прав не только на исходный код Java. Процесс развития, изменения в определении Java, API – все это находится в руках Java Community Process, вступить в которое может каждый. Для частных лиц это и вовсе бесплатно. Членами этой группы являются такие компании, как Intel, IBM, Credit Suisse, Software AG, RedHat. Именно они определяют будущее Java, а не Oracle. И у них есть свое мнение, как мы могли видеть в прошлый раз, когда утверждение финальной версии JPMS происходило не совсем гладко.
После этого вступления, в котором мы определились с тем, что Oracle “владеет” Java, но не является Java, давайте посмотрим на те изменения в процедуре поддержки развития и дорожной карте Java, которые представила Oracle.
Изменения после версий Java 9, 10, 11
Oracle объявила, что, начиная с JDK11, Oracle JDK перестанет быть бесплатным. И поначалу это заявление пугает. То, чем мы привыкли пользоваться бесплатно, больше таковым не будет. На практике то, что “мы должны платить” почти логично. Но небольшое слово “почти” стоит там не зря. Если есть какой-то сервис, которым мы пользовались, и он перестал быть бесплатным, у нас есть две опции: платить, чтобы пользоваться дальше, или больше не пользоваться. Стоит ли и дальше использовать Oracle JDK или мы можем перейти на что-то другое? Вот в чем вопрос на самом деле.
Чтобы ответить на него, нужно понять, что из себя представляет Oracle JDK, и какие есть альтернативы. Другое существенное изменение касается циклов выхода новых версий и понятия долгосрочной поддержки (англ. — Long Term Support или LTS). Для начала мы обсудим изменения в цикле выхода новых версий, затем путаницу с Open JDK и в конце — структуру LTS.
Цикл выхода новых версий
Java появилась в 1996 году. Первые несколько версий Java выходили более или менее регулярно.
Однако, взглянув на диаграмму, мы видим, что версия Java 5.0 вышла с задержкой. Java 6 также не спешила за предыдущей версией, и самый большой перерыв был между Java 6 и Java 7. Даже после этого новые версии выпускались не очень часто. Java 8 получила много новых функций, но ценой этому были два года ожидания. Похожим образом обстояли дела с Java 9, которая хоть и претерпела еще больших изменений, но ждать себя заставила целые три года.
Проблема таких циклов выхода обновлений заключается в том, что язык, который сам по себе конкурирует на постоянно развивающемся рынке языков, не может представлять новые функции достаточно быстро. Если на развитие модульной системы уходит три года, то ничто не может ускорить процесс. Тем не менее, некоторые вещи, которые появились в Java 9 могли быть выпущены раньше. Но они попросту не могли попасть к разработчикам, так как более ранних релизов не было. Уже доступные функции должны были ждать появления самой медленно разрабатываемой в этом релизе функции. Это одна из проблем классической каскадной модели разработки.
Oracle решила двигаться в духе agile и делать версии каждые шесть месяцев. Начиная с сентября 2017 года, новые релизы Java можно ожидать в марте и сентябре. Если какая-то функция будет не готова к этим датам, ее перенесут в следующий релиз, но остальные по мере готовности будут попадать в свежайшие.
В целом, это нормально. С одной стороны, Java-сообщество и разработчики должны быть этому рады. С другой стороны, остается вопрос поддержки. Кто может поддерживать такое количество версий Java? Именно поэтому была представлена долгосрочная поддержка (LTS), о которой мы скоро поговорим. Но сначала еще надо прояснить, что же такое Oracle JDK и OpenJDK.
Чем были и стали Oracle JDK и OpenJDK
Вплоть до Java 9 существовал бинарный выпуск Java сборки Oracle (Sun Microsystems), который использовался в производственной среде большинством разработчиков и компаний. Эта бинарность была основана на открытом исходном коде Java и содержала некоторые улучшения – дополнительные корпоративные инструменты, такие как Java Flight Recorder, Java Mission Control и некоторые другие функции вроде Application Class-Data Sharing.
Сборка OpenJDK создавалась из открытого исходного кода Java, в котором никаких улучшений не было. Эту сборку Java использовали те, кто хотел поэкспериментировать со свойствами Java, изменить код или просто по каким бы то ни было причинам были приверженцами исходного открытого кода. Хотя вы должны были загрузить исходный код и скомпилировать его для себя.
Начиная с Java 9, Oracle стала предоставлять OpenJDK параллельно с Oracle JDK. Также компания анонсировала, что она хочет сократить разрыв между характеристиками, производительностью и стабильностью двух версий, и как только это произойдет, сделать Oracle JDK платной. На тот момент и OpenJDK, и Oracle JDK были доступны бесплатно как бинарные сборки от Oracle. Это были Java 9 и Java 10.
После выпуска Java 11 это прекратилось. OpenJDK по-прежнему доступна бесплатно, но Oracle JDK для производственных систем стала платной. Существенной разницы между двумя версиями больше нет. У коммерческой версии есть инсталлятор, в то время как у OpenJDK – только ZIP-файл. Есть и другие различия, но на них пользователям Java не стоит обращать внимание. Технически детализированный список отличий описан Дональдом Смитом, старшим директором управления продуктами в Oracle в этой статье.
Более того, Oracle JDK по-прежнему бесплатен для других, даже коммерческих пользователей. Oracle JDK можно свободно использовать для:
• разработки
• тестирования
• прототипирования
• демонстрации
Вы можете использовать OpenJDK для других целей или заплатить Oracle и использовать Oracle JDK и получить поддержку. Поддержка — это хорошо.
Релизы с долгосрочной поддержкой (Long Term Support Releases)
Переход на новый цикл выпуска версий через каждые полгода поднял вопрос поддержки. Никто не может поддерживать такое количество версий с выгодой для себя. Если вы установили Java 6 для своего приложения в 2007 году, вы можете получить поддержку от Oracle через 11 лет. Выпуск новых версий каждые полгода подразумевает поддержку 22 разных версий одновременно. Это стало бы тяжелым бременем для Oracle или любого другого вендора, который бы решил поддерживать все релизы.
Стратегия Oracle заключается в том, чтобы каждые три года определять один релиз, который получит долгосрочную поддержку. Первым таким релизом стал Java 11, и он будет поддерживаться вплоть до 2026 года. В течение этого времени в сентябре 2021 года также выйдет Java 17, которая получит долгосрочную семилетнюю поддержку, в соответствии с текущими планами. Все прочие, так называемые функциональные релизы, будут поддерживаться только до выхода следующей версии.
Обратите внимание, что поддержка распространяется только на Oracle JDK и только для тех, кто оплатил JDK и поддержку. Но не думайте, что вас бросили на произвол судьбы, если планируете использовать OpenJDK. Для нас ничего не изменилось. Если вы не платили за поддержку до этого, вы ее и так не получали. Если платили, то будете продолжать оплачивать и получите эту поддержку.
Вот ссылка на статью Oracle с прогнозами конца жизненного цикла для разных версий.
Будут ли выпущены новые версии для OpenJDK? Конечно. Ранее выходили обновления открытого исходного кода Java, в котором исправлялись ошибки, хотя гарантий того, что они будут выходить, не было. Это происходило просто потому, что в этом были заинтересованы все участники. В дальнейшем все останется по-старому, Java будет получать новые версии, новые сборки.
Я вижу три основные стратегии выбора, какую версию Java лучше установить:
Итоги
Что же вам делать? Использовать OpenJDK или платить за Oracle JDK? Это вопрос рентабельности и того, насколько важна для вас поддержка от Oracle. Если ваш бизнес не может себе позволить поддержку Oracle JDK, потому что вы стартап, восходящая звезда с блестящей идеей продукта, но дырой в кармане, значит вашим потребностям соответствует OpenJDK. За него не нужно платить. И, кроме того, если вы стартап, для вас не так критично, если ваши серверы не будут работать в течение нескольких часов, пока технические специалисты не решат проблему. Если вы не можете позволить себе время простоя, скорее всего, вы работаете в зрелой компании, и, следовательно, должны использовать Oracle JDK и подписаться на поддержку. Также вы можете решить совместить разные модели и установить на некоторые продуктовые серверы, которые должны быть доступны 24/7, Oracle JDK, и OpenJDK на внутренние приложения, которые не так критичны для бизнеса.
В любом случае, вы можете продолжать использовать Java и дальше.
Питер Верхас работает в швейцарском офисе EPAM. Питер разрабатывает программное обеспечение для клиентов, проводит тренинги для программистов и занимается менторингом внутри компании.
Всё про язык программирования Java в 2021 году
Исходя из исследований JetBrains, Java — один из самых востребованных языков программирования 2020 года и в 2021 году сдавать свои позиции явно не собирается. Конечно, как и многие долгоиграющие языки программирования, Java терпел и упадки, и подъемы. Но Java крепко обосновался почти во всех сферах современной жизни и активно применяется в разработке многих продуктов.
Рассказываем, почему java-разработчики чувствуют себя спокойно на рынке труда, где они применяют свои навыки, а также делимся, почему профессия разработчика остается востребованной и высокооплачиваемой.
Что такое Java
Java — строго типизированный объектно-ориентированный язык программирования общего назначения, который был разработан еще в начале 1990-х компанией Sun Microsystems. Позже эту компанию купила Oracle.
Хорошо реализована мультипоточность (процесс в операционной системе состоит из нескольких потоков, которые выполняются параллельно);
Многоплатформенность (ваша программа работает на всех операционных системах);
Большое и активное Java-сообщество — все ошибки уже кем-то совершены и описаны, на все вопросы можно найти решение;
Большое разнообразие библиотек и фреймворков буквально на все случаи жизни;
Из минусов можно выделить несколько моментов:
Объектно-ориентированный подход реализован не совсем по канонам;
Код довольно многословный;
Не предназначен крупных игровых проектов (MineCraft не в счет — это скорее феномен, чем данность).
Одно из преимуществ Java — кроссплатформенность. Например, вы написали код для одной платформы, а воспроизвести его можно уже на любой другой, даже на старых телефонах-«звонилках». Этот принцип называют «пишем один раз, запускаем где угодно». Звучит просто, но на практике молодому специалисту этому еще предстоит обучиться.
Java — консервативный язык. Во многих языках программирования те или иные решения выполнены намного проще и эффективнее, по сравнению с размеренным и подробным описанием в Java.
Однако Java по-прежнему остается одним из самых надежных, удобных и простых в освоении языков, который с каждым обновлением становится только лучше. Тот самый случай, когда года только красят.
Сферы применения Java
Чтобы молодые специалисты имели представление, куда пойти после получения новых знаний и навыков, выделим лишь некоторые сферы:
Разработки enterprise-приложений — большие и сложные корпоративные приложения с высоким уровнем надежности, которые используют крупные компании для зарабатывания денег.
Корпоративные серверные ПО также нуждаются в постоянной заботе java-программистов. Например, трейдинговые системы, программы Eclipse, IntelliJ Idea и Netbeans IDE.
Финансовая сфера — инвестиционные банки применяют для офисных электронных систем, систем регулирования и конфирмации, проектов обработки данных.
Электронная коммерция и в области веб-приложений — RESTful сервисов созданы с использованием фреймворков Spring MVC, Struts 2.0. Куча приложений на основе Servlet, JSP и Struts
Веб-приложения государственных, оздоровительных, страховых, образовательных, оборонительных и других отделений также написаны на Java.
BigData — хоть Java и не доминирует в этой области (преимущественно используются технологии на основе С++), однако у Java есть потенциал получить большую долю этой растущей области в случае, если расширятся Hadoop (ключевая технология хранения и обработки больших данных) или ElasticSearch (поисковый движок по базе документов).
Встраиваемые системы, или Embedded Systems — системы, написанные под определенную платформу. Например, это чипы или пластиковые карточки для банкомата.