Статьи

Почему сейчас самое подходящее время для обновления до Java 8

Хотите узнать, как получить максимальную отдачу от новых функций Java 8 с AppDynamics? Начать бесплатную пробную версию сейчас !

В марте этого года Oracle выпустила свою наиболее ожидаемую за почти десятилетие версию Java 8. Последняя версия получила все большую популярность с момента ее анонса, и компании всех размеров стремились обновить ее.

Наш партнер, Typesafe, провел опрос о внедрении Java 8 среди 2800 разработчиков и обнаружил, что 65% компаний уже взяли на себя обязательство принять в течение первых 24 месяцев с даты выпуска.

Опрос Typesafe подтвердил опрос InfoQ разработчиков, которые заявили, что 61% были посвящены принятию Java 8. Их удобная тепловая карта ниже показывает, как разработчики должны были начать работу с Java 8 и использовать новые функции, такие как лямбда-выражения, дата и время, и Nashon. Движок JavaScript. На мой взгляд, лямбда-выражения — безусловно, самая захватывающая новая функция Java 8.

Java-8-Heatmap

Итак, почему люди так рады для Java 8?

Лямбда-выражения и потоковая обработка

Кто они такие?

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

Лямбда-выражение по сути является анонимной функцией, которую можно вызывать как обычно именованную функцию или передавать в качестве аргумента функциям более высокого порядка. Введение lambdas открывает аспекты функционального программирования для преимущественно объектно-ориентированной среды программирования, позволяя вашему коду быть более лаконичным и гибким.

Почему это полезно?

Рассмотрим задачу анализа данных Twitter из домашнего потока данного пользователя . В частности, мы будем создавать карту длины слова в список слов одинаковой длины из домашнего потока пользователя.

Например:

твиттер-пост

Должен дать:

1
2
3
4
5
6
7
8
9
{
  2=[so, an],
  3=[are, for],
  4=[wont, here, some, tips],
  7=[extreme],
  8=[programs, makeover],
  9=[sometimes, uninstall],
  11=[misbehaving, application]
}

И, конечно же, для многих твитов эти данные агрегируются.

Используя традиционные циклические конструкции Java, это можно решить следующим образом:

лямбды-код

Давайте разберем, что происходит, шаг за шагом:

— Получить домашнюю временную шкалу Twitter
— для каждого статуса

  • Извлечь текст
  • Удалить пунктуацию
  • Соберите в один большой список слов

— за каждое слово

  • Фильтровать HTTP ссылки и пустые слова
  • Добавить слово в отображение длины в список слов одинаковой длины

Теперь давайте рассмотрим решение с использованием потоковой обработки и лямбда-выражений:

лямбды-поток

Лямбда-решение следует той же логике и значительно короче. Для загрузки это решение может быть очень легко распараллелено. Ниже приведена следующая версия, выполняющая аналогичную обработку ниже:

лямбды-параллельный

Хотя этот пример является надуманным для иллюстрации, последствия здесь глубоки.

Добавляя лямбда-выражения, код может быть разработан быстрее, понятнее и в целом более гибким.

Гибкий код

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

В качестве другого примера, давайте рассмотрим запрос на улучшение для нашего процессора Twitter. В резюме, мы хотим получить список статусов временной шкалы Twitter, которые считаются «интересными». Конкретно, число ретвитов больше 1, а текст статуса содержит слово «потрясающе». Это довольно просто реализовать, как указано ниже:

твиттер-график

Теперь, в какой-то более поздний момент времени, предположим, что руководство продукта решает изменить то, что значит твит интересным. В частности, нам нужно предоставить пользовательский интерфейс, где пользователь может указать на основе доступного набора критериев, как твит считается интересным.

Это создает интересный набор проблем. Во-первых, пользовательский интерфейс должен обеспечивать некоторое представление доступного набора критериев фильтра. Что еще более важно, это представление должно проявляться в процессоре Twitter как формальный набор критериев фильтра, применяемых в коде. Один из подходов заключается в параметризации фильтра таким образом, чтобы вызывающий код определял эти критерии. Эта стратегия иллюстрируется следующим образом:

щебет-интересно-график

Это дает вызывающему коду возможность указать произвольные критерии фильтрации, реализованные компонентом пользовательского интерфейса.

Благодаря устранению неоднозначности того, как временная шкала отфильтровывается по наложенным критериям, код теперь достаточно гибок, чтобы принять произвольные критерии фильтрации.

Полную информацию о коде можно найти в следующем репозитории Github .

Резюме

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

Инженеры и целые компании работают лучше, когда они могут тратить больше времени на инновации в новых продуктах, а не сосредоточивать большую часть своего времени на борьбе с существующими проблемами и устранении ошибок. Благодаря поддержке AppDynamics Java 8 вы наконец-то сможете получить некоторое время назад, стать более эффективными и снова начать вводить новшества.

После внедрения AppDynamics в своей среде Java Гири Натан, вице-президент по разработкам в Priceline.com, заявил: «Решение AppDynamics APM повышает нашу гибкость, позволяя нам обрабатывать любой новый код на лету», — говорит Натан. «Мы можем отслеживать все, от сервлетов и точек входа Enterprise JavaBeans до точек выхода JDBC, что дает нам полное представление о наших транзакциях».

Хотите узнать, как получить максимальную отдачу от новых функций Java 8 с AppDynamics? Начать бесплатную пробную версию сейчас !