Держать руку на пульсе технологий — должно стать стилем жизни

Фото: pexels.com

О всемогуществе Java-технологий ходит множество легенд, мифов. Эта платформа почитаема и любима всеми, кто хочет быстро и качественно развернуть стартап или разработать мобильное приложение, другими словами, заработать денег. Насколько обосновано такое отношение, действительно ли Java такое универсальное средство? И самое главное: насколько перспективна профессия Java Developer? Об этом и многом другом мы говорим с нашим экспертом — преподавателем курса Java Developer Николаем Толстокулаковым.

Расскажите немного о себе. Почему вы выбрали именно Java?

Обучаясь в НГУ во второй половине 90-ых, я впервые узнал о новом языке программирования Java. Мне он сразу показался перспективным. В тот момент я ощущал острую необходимость в подобном языке, который привлекал следующими своими чертами:

  • более простой и дружественный, чем С++;
  • дает возможность работать на множестве платформ;
  • большое количество хороших и свободных библиотек для решения самых разных задач.

Я выбрал его для написания своих дипломов (бакалавра и магистра).

За прошедшие годы я принимал участие во множестве проектов на Java в самых разных областях.

Что такое Java сегодня? Почему-то в сознании многих этот язык связывается, в основном, с играми и мобильными приложениями. Где помимо этих областей он используется? Как и куда развивается?

Сейчас я бы выделил две основные области применения.

  1. Server side programming: JEE — Java Enterprise Edition, Spring, Hadoop.
  2. Android.

Есть, конечно, и другие области: графические десктоп-приложения, встраиваемые системы (например, приложения для BluRay дисков, J2ME — игры и приложения для не смартфонов) и другие, но их доля среди всех проектов невелика.

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

Сам язык не стоит на месте и, хотя больше не является, как в 90-ые, двигателем прогресса в языках программирования, продолжает обогащаться новыми возможностями и технологиями.

Можете назвать наиболее интересные и успешные, с вашей точки зрения, проекты на нем (как отечественные, так и зарубежные)? Расскажите о них буквально пару слов, если есть яркие примеры.

Из «горячего» на сейчас:

  1. Android
  2. Hadoop
  3. Cassandra

Девизом Java часто называют «много платформ — один язык». Насколько это справедливо? Кроме того, насколько я понимаю, Java — это не только язык.

Действительно, есть JVM (Java Virtual Machine) — то программное обеспечение, которое непосредственно исполняет программы, написанные на Java. В JVM были инвестированы гигантские средства и очень много времени. И сейчас она используется как база не только для Java, но и для множества других языков программирования, которые хотят воспользоваться передовыми технологиями в JVM. Часть подобных языков пытается заполнить ниши, для которых сама Java не очень подходит: скриптовые языки (JavaScript, Python, Groovy). Но есть и другой пример: Scala. Создатели данного языка позиционируют его как замену Java на новом, более совершенном уровне. Дело в том, что в Java очень строго соблюдается принцип совместимости между версиями: любое новое изменение не должно ломать старый код и программы. Это делает процесс внедрения новых возможностей в язык не очень быстрым и сложным. Но жизнь не стоит на месте, и для внедрения новых концепций и идей порой проще создать новый язык, чем менять старый. При этом создатели Scala не хотят терять весь багаж достижений в виде JVM, множества библиотек, которые есть в мире Java. Поэтому построили свой язык поверх JVM c возможностью прозрачного взаимодействия между Scala и Java частями в рамках одной программы.

Перейдем к «философско-религиозному» вопросу извечной войны C# и Java: «решетку» нередко называют Java-killer’ом, а сторонники Шарпа предрекают ему скорую смерть за «моноплатформенность». Особенно часто этот вопрос возникает у новичков, решающих, какой из этих языков изучать. Позвольте узнать ваше мнение об этом холиваре.

Никто из них не умрет в ближайшее десятилетие. Самый острый этап конкуренции между ними тоже позади лет десять как. У каждого языка есть свои области, в которых они уже прочно обосновались. Конкуренция и обмен идеями между ними пошла на пользу обоим. Сфера применения Java гораздо шире и рынок программистов больше. Формально есть Tiobe index, где рейтинг отличается в три раза. Основное применение C# пока так и ограничивается Windows-платформами, но их доля на мобильном рынке ничтожна, а на серверном рынке испытывает давление со стороны Linux. Такие компании, как Google, Facebook, Twitter, строят свой бизнес из сотен тысяч серверов без использования Windows & .Net/C#. Значение desktop падает из-за планшетов. Альтернативные решения с использованием C# за пределами Windows есть, но особой популярности не завоевали.

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

Границы применимости — работа на низком уровне с hardware, ядром операционной системы, системы реального времени и там, где требуется выжать из железа все, что можно, и даже чуть больше. Стартапы, если речь идет не об Android, а о Web-сервисах, чаще используют другие технологии (PHP, JavaScript, Python, Ruby).

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

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

Я не соглашусь. Уровень входа все-таки гораздо выше, чем у PHP, JavaScript. Это оттуда чаще получается «обезьяна с гранатой».

И все же, что должен знать и уметь действительно хороший java-разработчик, хотя бы на первом этапе?

На первом этапе Junior должен свободно ориентироваться в языковых конструкциях и самостоятельно читать и понимать код. Понимать структуру проектов и цикл разработки программ.

В Академии Сухорукова Вы читаете курс Java Developer, можете рассказать о нем подробнее? Какова его программа? На кого он нацелен в первую очередь?

Он нацелен на тех, кто прошел стадию Junior и хочет двигаться дальше в область серверного программирования.

Какая подготовка потребуется от слушателя для его успешного прохождения?

В целом, как и везде в программировании, требуется склонность к логическому, аналитическому мышлению. Любой опыт программирования будет полезен. Желательно начать читать книги по Java до начала курса.

Будет ли готов выпускник курса непосредственно преступить к работе? Или стоит еще попрактиковаться самостоятельно?

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

Что бы вы хотели пожелать будущим слушателям и всем тем, кто хочет развиваться в такой области, как кросплатформенная разработка?

Все время узнавать новое и держать руку на пульсе технологий — это должно стать стилем жизни.

P.S. Николай, скажите: Джава или Ява? Как правильно его называют в профессиональной среде?

Ява — это чисто русскоязычное произношение. В нашей стране допустимы оба варианта — поймут без проблем.

От себя нам остается только добавить, что курс Java Developer уже скоро стартует в Академии Сухорукова. Спешите записаться и войти в мир кроссплатформенной разработки. Вы можете заполнить заявку на нашем сайте, позвонить по телефону +7 (800) 500 15 56 или просто написать на почту academ@suhorukov.com.