Все прогрессивное человечество отмечает двадцатилетие Java. История, начавшаяся с ПО для бытовой электроники и веба, разрослась до самого популярного языка программирования в мире с армией из девяти миллионов разработчиков и парком из семи миллиардов устройств. Сегодня Java применяется практически везде: от огромных многопроцессорный кластеров до миниатюрных чипов в смарт-картах. Примечательно, что для демонстрации возможностей платформы на первых этапов был создан прототип устройства, напоминающего планшет с сенсорным дисплеем. Устройство сильно обгоняло свое время, поэтому так и не увидело свет. Однако сейчас значительная часть мобильных приложений написана именно на Java. В конце XX века было трудно представить какое влияние Java окажет на человечество. А сейчас эта платформа используется на передовых рубежах научно-технического прогресса. Java работает и в марсоходах NASA, и в большом адронном коллайдере. А в повседневной жизни нас окружают компьютеры, мобильные устройства, медиаплееры и даже смарткарты, также работающие на Java.
Перед юбилеем мы опросили двух признанных членов Java-сообщества и одного разработчика платформы о том, как они познакомились с Java, как это повлияло на их карьеру, и каким они видят ближайшее будущее платформы.
Антон Архипов, Java Champion
«В Java я нашёл отличное соответствие своим интересам и требованиям рынка.»
"Hello World" на Java я написал в 2000 году. А в 2001 году, будучи студентом, мне довелось участвовать в студенческом проекте, где делали симулятор тестирования стабильности корабля. Симулятор написали на Java. В то время это была версия Java 1.3. После этого, по стечению обстоятельств, я устроился работать в контору, в которой уже на всю мощь использовалась Java SE и ME. Словом, мою занятость с Java определил рынок — для Java-программистов в Эстонии всегда было много рабочих мест.
По большей части, в область моих интересов всегда входила разработка серверных приложений, и поменьше web и desktop. Поэтому, наверное, на мою карьеру могли бы оказать такое же влияние и .NET, и Erlang, и может быть даже PHP. Но .NET не отличался кросс-платформенностью, Erlang не слишком популярен, а PHP очень часто связан с разработкой веб-сайтов, что не сильно меня привлекало. В Java я нашёл отличное соответствие своим интересам и требованиям рынка.
Если говорить о перспективах развития, то до сих пор от версии к версии Java радовала нас улучшениями в области производительности. Будем надеяться, что эта тенденция сохранится. Развитие модульности в Java-платформе (Project Jigsaw) и разработки в области поддержки GPU (Project Sumatra) дают надежду, что когда-нибудь Java займёт своё место на более требовательных аппаратных платформах. Как следствие, Java могла бы доминировать на рынке «интернета вещей» (IoT).
Яков Файн, Java Champion
«Думаю, что ближайшие 5-10 лет Java будет продолжать доминировать на сервере, а JavaScript на клиенте».
В 1998 году я решил перейти на язык Java. До этого несколько лет разрабатывал client/server приложения. Java applets меня не очень вдохновляли, а вот разработка многоуровневых распределенных систем показалась интересной и перспективной. Синтаксис языка освоил легко, но чтобы понять архитектуру J2EE, прошел недельный тренинг от WebLogic и понял, как делать ПО на серверной стороне.
После этого тренинга я стал работать с использованием J2EE для финансовых компаний на Wall Street. Проекты были интересные и сложные. Уже в 2000 году я работал с первыми версиями EJB и JMS. 11 сентября 2001 года мой клиент потерял дата-центр в Нью-Йорке, но гибкая архитектура J2EE позволила нам написать trading application, которое мы в течение трех дней переконфигурировали на «запасные аэродромы». Это было реально круто и несмотря на трагический повод я был рад убедиться, что технологии Java позволили нам правильно построить систему.
После этого я написал несколько книг по Java, около тысячи постов для блогов, и провел несчетное количество тренингов. Вряд ли какой-нибудь другой язык мог бы оказать такое большое влияние на мою профессиональную жизнь и карьеру. Нет ни одного языка программирования с таким развитым и открытым мировым сообществом, где профессионалы с удовольствием и бесплатно делятся друг с другом техническими решениями. На StackOverflow.com почти нет неотвеченных вопросов по Java.
Сейчас нечто похожее я наблюдаю с языком JavaScript, у которого наступила вторая молодость. Я сейчас активно занимаюсь JavaScript и сопутствующими технологиями. При этом, Java – это не просто язык. Это мощная экосистема, которая продолжает развиваться. Новый синтаксис и API в Java 8 сделали программирование на Java еще более интересными. Думаю, что в ближайшие 5-10 лет Java будет продолжать доминировать на сервере, а JavaScript на клиенте. Вот эта пара и будет главными инструментами у многих программистов. По крайней мере у меня.
Алексей Шипилёв, разработчик Java Virtual Machine
«Для меня Java с самого начала была и остаётся языком, который настолько прост, что может быть понят почти любым программистом».
Как и всякий порядочный школьник, до поступления в институт я писал на (Object) Pascal. Уже на первом курсе студенческая жизнь довела меня до того, что где-то в промежутке между взятием 256-ого интеграла и сборкой Gentoo, мне приспичило попробовать Java. Плюс, всякие соседи пели про классную IntelliJ IDEA (кажется, версии 2.0), которая заткнёт эти ваши Borland Delphi и С++ Builder'ы далеко и надолго.
Одной из первых моих «задач», по наводке нашего слегка экстравагантного админа общежития, была реализация конвертера номеров комнат в общаге в ip-адреса и обратно – дабы поддержать (довольно спорную) конвенцию назначения статических адресов – «так, чтобы в браузере работало, т.е. на джаве». Правда, довольно быстро оказалось, что админ имел в виду JavaScript, а не Java – c тех пор я недоверчиво отношусь ко всем, их путающим.
Ну а дальше понеслось. Когда надо было писать локальный прикладной софт, который должен был разрабатываться на винде, а бегать под линуксом, Java выбралась методом исключения. Писать прикладной софт на С/C++ казалось убийством времени, которое можно было с пользой потратить на Старкрафт. Perl обычно отвергался ввиду того, что уже через месяц было непонятно, что же имел в виду автор – и что было особенно обидно, автором чаще всего был ты сам. Python и Ruby воспринимались с энтузиазмом, но без фанатизма – пару сотен строчек написать было можно, а дальше без инструментов и стандартных практик они снова превращались в Perl.
Как Java повлияла на мою карьеру? Она стала мягкой и шелковистой! Начну издалека. Мне с детства нравились естественные науки: до появления дома ZX Spectrum'а я серьёзно собирался стать сначала геологом, а потом физиком-ядерщиком – поэтому метод познания действительности через эксперименты и наблюдения мне казался основным.
Потом, правда, завертелась вся эта информатика с программированием, где мы учились делать вещи, живущие сами по себе, в отрыве от реальности – вы напишите, а компьютер – это волшебная коробка, он сам знает, как сделать эффективно. В определённые моменты реальный мир прорывался, но тут же «закукливался» обратно: напр GUI, кнопочками, TCanvas, вот этим всем. И была в моём проекте проблема – он работал медленно. Помыкавшись с отсутствием вменяемых профайлеров и поделав улучшения вслепую, я с горечью заключил, что где-то в консерватории проблема.
И вот, несколько лет спустя мне повезло попасть в один из проектов Intel, занимающийся разработкой альтернативного Java-рантайма, более известного под названием Apache Harmony. Может быть, так сложились звёзды, но попал я интерном в перформанс-команду. И через несколько месяцев я понял, что вот оно – есть возможность заниматься естественно-научными изысканиями (тем, чем я люблю и хорошо умею) в программировании (том, что я хорошо умею и люблю). И более того, есть такая необходимость, ибо конкуренция между продуктами и компаниями была выражена в производительности стандартного софта.
Другими словами, размеры экосистемы Java настолько велики, что там найдётся спрос на многие «экзотические» услуги – будь то написание и тюнинг рантаймов, поддержка низкоуровневых библиотек, разработка узкоспециализированного софта и т.п.
Другие языки на меня тоже оказали влияние, конечно же – с ними можно было сравнивать. Для меня Java с самого начала была и остаётся языком, который настолько прост, что может быть понят почти любым программистом, даже без большого опыта. Я сам, будучи начинающим программистом, хорошо понимал либо паскалевский, либо джавовый код. Во всех остальных случаях приходилось продираться через завалы макросов, перегрузок, алиасов и прочего, что выдавалось за улучшаторы читаемости, и попутно ломало как ручную, так и автоматическую навигацию по коду.
Понятно, что и в Java можно нагородить фабрику фасадов адаптеров прототипов к билдерам. Но опять же, размеры экосистемы играют на то, что найдутся разумные люди, которые соберутся с единомышленниками и начнут проповедовать иной путь. Это даёт возможность избежать эффекта эхо-камеры, в которой без всякой рациональности родится The Only True Way, а все несогласные будут изгоняться под знамёнами «здесь так не принято».
Глядя на прошедшие 5-10 лет, я понимаю, как трудно сделать подобный прогноз на 5-10 лет вперёд. Java была, есть, и видимо, в обозримом будущем останется основной платформой для надёжного backend-софта и ещё больше укрепится на поддержке JVM-языков. На мой взгляд, это главным образом обусловлено двумя вещами.
Первое – это негласный контракт на стабильность платформы: обратную совместимость нарушать нельзя; подставлять пользователей под баги нельзя; менять поведение, которое вызовет неудобства (без повода) нельзя; производительность регрессировать (без повода) нельзя и т.п. Это, конечно, временами расстраивает во время работы над самой платформой, но мы знаем, что надёжность платформы – это то, что привлекает крупных (да и начинающих) разработчиков.
Второе – это постоянные улучшения производительности, наблюдаемости и отлаживаемости на JVM, которые, конечно же, затрагивают не только Java, но и другие языки. Многие уже поняли, что вместо того, чтобы писать собственный рантайм: собственную виртуалку, собственный менеджер памяти, собственную оснастку компилятора – проще позаимствовать всё это в хорошо оттестированной и уже распространённой JVM.
Горячие темы