Поздравляем с прохождением восьмой недели CS50! Надеемся, вы справились с большой и интересной задачей, которую предложил студентам Дэвид Малан. Не устаем повторять, что практика очень важна, поэтому советуем решать побольше задач.

Мы тут вам постоянно рассказываем о том, что Java — очень популярный язык. Найти информацию о том, почему Java так популярна — довольно просто, в то время как показать новичку конкретные приложения, написанные на этом языке — нет. Всё, что на поверхности видит вокруг себя так называемый «рядовой пользователь» обычно написано на чём-то другом. Сайты — это HTML + CSS + JavaScript + PHP/Ruby/Python. Игры — это C++. Операционные системы, что-то «для железа» или драйверы — C, который без плюсов. У «непосвященных» это порождает волну недоверия к языку, который «почти везде, а конкретно нигде». И абсолютно несправедливо!

Enterprise: мнимая «невидимость» Java

Такая ситуация сложилась потому, что Java остается невидимой с точки зрения пользователя. Она тихо выполняет свою работу, порой весьма сложную. Если диспетчер следит за движением самолётов и системой жизнеобеспечения аэропорта на мониторе своего компьютера, скорее всего, внутреннюю работу, всё это отслеживание позиций, регулировку, отсылку предупреждений выполняет Java. Распределенные системы для покупки билетов, банковские системы, через которые проходят миллиарды, программы для электронной коммерции? Java. Приложения, управляющие работой бизнеса или людьми в компании, — то, что скрывается за аббревиатурами CRM, ERP? Эти гигантские и сложные программы тоже очень часто написаны на Java. По сути везде, где есть распределенный средний и крупный бизнес, ищи Java.

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

Большие веб-приложения «для людей»

Пользователи часто не осознают, что за симпатичным фасадом сайта, которым они пользуются, может стоять огромное приложение, требующее сотни тысяч человеко-часов на разработку и поддержку. Очень часто сложную (или «грязную») работу выполняет Java. Большие сайты практически не бывают монолитами, использующими только один язык или технологию для бек-энда (той части сайта, которая выполняется на сервере, back-end явным образом пользователю не виден). Доля Java-кода ощутима, в частности, в следующих веб-приложениях:

  • Ebay — в основе архитектуры крупнейшего интернет-аукциона лежит именно Java;
  • Amazon — еще один сайт, которому подходит определение «крупнейший». Международный интернет-магазин и одновременно площадка для других магазинов также использует возможности Java для построения архитектуры и высокого уровня масштабирования;
  • социальная сеть Linkedin, та, которая для деловых контактов, преимущественно написана на Java;
  • Корпорация Добра, то бишь, Google активно использует Java в разработке таких сервисов, как Google Plus или GTalk;
  • Twitter. История этого приложения начиналась вовсе не с Java, а с Ruby on Rails. Это такой фреймворк, который триумфально выходит на сцену, когда необходимо создать сложное веб-приложение очень быстро. Так было и с Twitter. Однако разработчики не учли лавинообразно растущую популярность этого незамысловатого сервиса, из-за которой стала проседать производительность. Пришлось переписывать важные его части на языке, который лучше масштабируется — на Java;
  • Facebook. Долгое время самая популярная социальная сеть оставалась адептом языка PHP, что большая редкость для «гигантов». Этот язык, удобный для небольших сайтов, представляет собой большую проблему, если те начинают расти. На самом деле, и сегодня Facebook до сих пор остается PHP-шной вотчиной к вящей радости почитателей этого языка. Тем не менее, если присмотреться к Facebook изнутри, там можно найти ростки Java и множества других языков. Например, сайт использует HBase (это основанная на Java база данных) в качестве платформы для мессенджера. А масштабируемым сервисом для разработки служит такая интересная штука, как Apache Thrift. Этот программный конвейер с движком генерации кода для разработки служб работает, в частности, с Java.
  • Мобильные приложения и игры

    Вот уж где Java-программисту можно разгуляться, так это в разработке под ОС Android. Более 90 процентов всего, что было создано для этой мобильной платформы, написано с помощью Java. А это огромный рынок: по данным исследования аналитического агентства IDC, по состоянию на середину 2015 года почти 83% пользователей смартфонов предпочитают Android (почти 14% досталось Apple iOS). Android-разработчик давно уже считается отдельной профессией, а сама операционная система здорово простимулировала Java. У начинающих Java-программистов появился интересный выбор: после изучения Java Core можно углубиться в Java EE (для Enterprise), а можно приложить усилия для старта в мобильной разработке, изучив Android API.
    … Кстати, немаленькая часть самой операционной системы Android тоже написана на Java.

    Большие игры: негусто, но есть

    Больших 3D-игр А-класса на Java написано совсем немного. Не потому, что возможности языка не позволяют. Определенные проблемы с геймдевом у Java есть, но их нельзя назвать нерешаемыми. Главная причина — совсем в другом: исторически сложилось так, что самые мощные игровые движки написаны для использования с C++. Тем не менее, у Java весьма стоящий предмет для гордости, и имя ему — Minecraft. Да, любимая игра тех, кто родился в 2000 годы, настоящий кладезь креатива и созидания, была написана именно на Java. А те, кто постарше, помнят MMORPG, попадавшую в Книгу рекордов Гиннеса (из-за зашкаливающего количества игроков) — RuneScape. Кстати, она вполне себе жива и по сей день.

    Приложения от разработчиков для разработчиков

    Разработчики себя не обидят, поэтому пишут приложения для собственной работы с помощью лучших инструментов;). Вот где Java-программисты разгулялись не на шутку: на этом языке написано огромное количество известных и самых лучших приложений, которые используются в процессе разработки ПО. Например, известные IDE и текстовые редакторы — Eclipse, IntelliJ IDEA, NetBeans, RubyMine, Aptana. Система отслеживания ошибок и взаимодействия с пользователями Jira, система для документирования и создания базы знаний Confluence. Также Java хорошо проявила себя в работе с Big Data: на ней написан проект Hadoop, созданный для разработки и выполнения распределенных приложений, работающих на кластерах.

    Что еще?

    Да уйма всего, на самом-то деле. Вот еще несколько примеров из разных опер:

    OpenOffice — офисный пакет, кросс-платформенный, универсальный.

    BookSmart — бесплатное приложение для создания книг и фотоальбомов.

    UltraMixer — софт для диджеев.

    MATLAB — платформа вместе с средой разработки и языком для научных вычислений. Написан на Java и C.

    ImageJ — приложение с открытым кодом для анализа и обработки изображений.

    LWJGL — под этой страшной аббревиатурой скрывается библиотека для работы с OpenGL. Она рассчитана на тех программистов, которые хотят делать игры под Java.

    Processing — подъязык программирования, основанный на Java. Позволяет легко писать мультимедийные приложения, можно подключать в качестве библиотеки Java.

    NetBeans Platform — Java-фреймворк, на котором написана масса «тяжелых» Enterprise-приложений, например, Nato MICE Console или Boeing Mass Properties Toolkit.