Обновить
128K+

Java *

Объектно-ориентированный язык программирования

166,62
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Реактивное программирование со Spring Boot 2. Часть 1

Время на прочтение6 мин
Охват и читатели50K

Не так давно вышла новая версия самого популярного фреймворка на Java: Spring Framework 5. Новая версия принесла много нового. Одно из самых больших нововведений — модель реактивного программирования. Совсем скоро выйдет Spring Boot 2, который существенно упростит создание микросервисов c данным подходом.

Если вы, как и я, хотите разобраться подробнее, что это такое и как это используется, то добро пожаловать под кат. Статья делится на две части — теоретическую и практическую. Сейчас мы постараемся разобраться, что значит быть реактивным. После чего попробуем использовать полученные знания для написания собственного микросервиса(часть 2).
Читать дальше →

Анонс Java-конференции JPoint 2018: JDK 9, высокие нагрузки и производительность JVM

Время на прочтение9 мин
Охват и читатели9.1K


Не успели еще улечься впечатления от Joker 2017, а мы уже готовим JPoint 2018. Точнее, мы начали готовить его уже пару месяцев назад, так что сегодня уже есть что анонсировать! Как видите, Java-конференции мы делаем без пауз.

Давайте посмотрим, что у нас есть:

  1. Название: Java-конференция JPoint 2018.
  2. Дата и место проведения: 6-7 апреля 2018 года, Москва, Конгресс-центр ЦМТ.
  3. 10 докладчиков уже подтвердили свое участие.
  4. Call For Papers.
  5. Выставка и стенды.
  6. Несколько тренингов.

Все подробности — под катом.

Анонс митапа ThinkJava #6, Харьков

Время на прочтение1 мин
Охват и читатели2.1K
Приглашаем всех Java-разработчиков на шестую встречу ThinkJava-комьюнити! Будем говорить о разработке реактивных приложений, а перерывах — общаться на кофе-брейках и делиться впечатлениями об услышанном и собственным опытом.
Читать дальше →

Конференция Joker 2017: удивительные истории

Время на прочтение7 мин
Охват и читатели6.5K
Дополнение к обзору с подведением итогов конференции Joker, проходившей в Санкт-Петербурге 3-4 ноября 2017 года.

На какие темы какие доклады были на конференции, кто из спикеров принял участие, что было интересного, чем отличался этот год от предыдущих — обо всём можно прочитать дальше.


Читать дальше →

Обработка ошибок в формате JSON со Spring Boot

Время на прочтение5 мин
Охват и читатели38K
Часто при работе с микросервисами, построенными с помощью технологии Spring Boot, можно видеть стандартный вывод ошибок подобный этому:

{
    "timestamp": 1510417124782,
    "status": 500,
    "error": "Internal Server Error",
    "exception": "com.netflix.hystrix.exception.HystrixRuntimeException",
    "message": "ApplicationRepository#save(Application) failed and no fallback available.",
    "path": "/application"
}

Такой вывод может быть излишним и ненужным клиентам вашего сервиса. Если вы хотите упростить жизнь сторонним сервисам в случае ошибки, то как раз об этом и пойдет речь в данном посте.
Читать дальше →

Инстанцируем java.lang.Class

Время на прочтение13 мин
Охват и читатели40K


Конструктор java.lang.Class является одной из самых охраняемых сущностей в языке Java. В спецификации чётко сказано, что объекты типа Class может создавать только сама JVM и что нам тут делать нечего, но так ли это на самом деле?


Предлагаю погрузиться в глубины Reflection API (и не только) и выяснить, как там всё устроено и насколько трудно будет обойти имеющиеся ограничения.

Читать дальше →

Обзор Java 9

Время на прочтение5 мин
Охват и читатели60K
Всем доброго времени суток. В ноябре 2017 в Санкт-Петербурге прошло одно из самых примечательных событий года для отечественных Java-разработчиков: конференция Joker. На конференции было озвучено много тем, такие как GC, Concurrency, Spring Boot, JUnit 5 и другие, презентации по которым вы можете найти в открытом доступе на сайте конференции. Перечислять все смысла нет, так как по каждому топику можно составить отдельную статью с примерами и выдержками. Поэтому остановимся на главном.

Основной темой были нововведения в Java 9: ей посвятили аж две лекции, по модулям, и по всему остальному. Саму девятку Oracle изначально планировали выпустить еще в середине лета 2016, однако релиз был перенесен сначала на полгода, а потом и вовсе на вторую половину 2017. И вот, 21 сентября 2017, выход девятки состоялся.

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

Итак, по порядку. Как говорилось выше, нововведения в девятке можно разделить на два блока: общий и модульный. Придерживаясь хронологии Joker, начнем с первого.

1. Появление литералов в коллекциях


На самом деле литералы в коллекциях можно использовать с 7 версии, никто не запрещает выполнить следующее, если у вас установлен ProjectCoin:
Читать дальше →

Назад в будущее: как прошёл Joker 2017

Время на прочтение6 мин
Охват и читатели7.5K


Давно в Java-мире не было такого оживления, как этой осенью: наконец-то вышла «девятка», завершены и другие «долгострои» (Java EE 8, JUnit 5, Spring Framework 5), Java EE отправляется в Eclipse Foundation, коммерческие фичи Oracle JDK решено опенсорснуть, а сама Java переходит на полугодовой релизный цикл.

Как в таком урагане новостей может выглядеть Java-конференция? Надо сосредоточиться на этих новых темах, или думать о тех разработчиках, которые не то что на «девятку», а на «восьмёрку» ещё не перешли? Мы провели в Петербурге пятый по счёту Joker — и под катом подробно написали о том, как это было.
Читать дальше →

Java EE 8: краткий и весьма оптимистичный обзор новых возможностей

Время на прочтение8 мин
Охват и читатели22K


Автор снимка — Сабине Хюрдлер / Fotolia.com

Привет, Хабр!

Когда-то давно, знойным летом 2013 года вы и именно вы убедили нас взяться за работу над замечательной книгой "Изучаем Java EE 7" Энтони Гонсалвеса, которая выдержала 6 тиражей и стала настоящим бестселлером. Теперь мы всерьез рассчитываем еще до конца года приступить к работе над книгой по Java EE 8 от грамотного и симпатичного специалиста Себастьяна Дашнера.



7 ноября господин Дашнер опубликовал статью с собственными размышлениями о перспективах и плюшках Java EE 8. Под катом вашему вниманию предлагается перевод этой статьи с немецкого языка
Читать дальше →

Вложенные классы в Java

Время на прочтение3 мин
Охват и читатели70K
image

Добрый день, Хабровчане! Я уже довольно давно программирую на java, и нередко использую вложенные классы, но недавно наткнулся на статический вложенный класс и понял, что я о нем почти ничего не знаю. Поэтому я решил разобраться в этом, систематизировать свои знания, а заодно и поделиться этими знаниями с вами.
Читать дальше →

Каков должен быть размер у Thread Pool?

Время на прочтение5 мин
Охват и читатели9.3K
В нашей статье Stream API & ForkJoinPool мы уже рассказывали про возможности изменять размер пула потоков, который мы можем использовать в параллельных обработчиках, использующих Stream API или Fork Join. Надеюсь эта информация вам пригодилась, когда находясь на должности Senior Java Developer, вы смогли увеличить производительность разработанной вами системы, изменив размер пула по умолчанию. Так как наши курсы, в целом, заточены на переход ступеньку выше от джуниора и миддла выше, то часть программы строится исходя из основных вопросов задаваемых на собеседованиях. Один из из которых звучит так: «У вас есть приложение. И есть задача использующая Stream API или Fork Join, которая поддается распараллеливанию. При каких условиях вы можете счесть разумным изменить размер пула потоков заданный по умолчанию? Какой размер вы предложите в этом случае?»

Можете попробовать ответить на этот вопрос сами, прежде чем читать дальше, чтобы проверить собственную готовность к подобному интервью на данный момент.

Чтобы теоретические рассуждения подкрепить настоящими цифрами предлагаем погонять небольшой бенчмарк для стандартного метода Arrays.parallelSort(), реализующего разновидность алгоритма merge sort, и исполняемого на ForkJoinPool.commonPool(). Запустим этот алгоритм на одном и том же большом массиве с различными размерами commonPool и проанализируем результаты.


Читать дальше →

Android Oreo: чего ждать разработчикам?

Время на прочтение8 мин
Охват и читатели21K
Есть ли в Android Studio 3.0 что-то революционно новое? В чем основной недостаток Java 9 и каковы плюсы Kotlin? Про это, а также про профайлеры, компиляторы, IoT и многое другое — в нашем интервью с Денисом Неклюдовым — первым разработчиком из России, получившим статус GDE.


Читать дальше →

Пошаговое руководство работы с Antlr4 с Maven проектом для Java через Intellij Idea

Время на прочтение3 мин
Охват и читатели26K

ANTLR — это генератор парсеров, который позволяет создавать парсер по описанию грамматики на одном из основных языков программирования. Он сам написан на java и прекрасно работает с Java.


Пошаговое руководство:


1) Поставить Oracle Java JDK и Intellij Idea, (можно пропустить этот шаг, если они уже поставлены), и запустить Intellij Idea


2) File-Setting-Plugins


Читать дальше →

Ближайшие события

Generic исключения в лямбда-функциях

Время на прочтение5 мин
Охват и читатели9.3K
UPD: Добавлен пример с ленивыми вычислениями поверх стандартных стримов.

Как известно из функциональных интерфейсов в Stream API нельзя выбрасывать контролируемые исключения. Если по каким-то причинам это необходимо (например, работа с файлами, базами данных или по сети), приходится оборачивать их в RuntimeException. Это неплохо работает если ошибки игнорируются, но если их необходимо обрабатывать, то код получается громоздкий и трудночитаемый. Я заинтересовался можно ли объявлять интерфейсы и методы с generic исключениями и неожиданно для себя узнал, что можно.

Зададим такой функциональный интерфейс, от стандартного интерфейса Function<A, B> он отличается только наличием третьего generic-типа для бросаемого исключения.

public interface FunctionWithExceptions<A, B, T extends Throwable>{
	B apply(A a) throws T;
}

И объявим простенький метод, который преобразует коллекцию используя этот интерфейс, у этого метода также объявлен generic-тип для бросаемого исключения (совпадающий с типом исключения которое может выбросить функциональный интерфейс).

public static <A, B, T extends Throwable> Collection<B> map(Collection<A> source, FunctionWithExceptions<A, B, T> function) throws T {
	Collection<B> result = new ArrayList<>();
	for (A a : source) {
		result.add(function.apply(a));
	}
	return result;
}

Посмотрим, как будет выглядит обработка исключений с ними в разных случаях.
Читать дальше →

Стриминг и анализ логов Java приложений в MS Azure с использованием Log4j и Stream Analytics

Время на прочтение10 мин
Охват и читатели4.1K

В этой статье я покажу несколько работающих решений задачи передачи и анализа логов из Java приложений в MS Azure. Мы рассмотрим решения как для windows, так и для linux виртуальных машин, находящихся как в облаке, так и on-premise. В качестве подсистемы логирования для Java будем использовать log4j2.


Для анализа логов будем использовать Azure Stream Analytics.


Читать дальше →

Моделирование планеты маргариток

Время на прочтение10 мин
Охват и читатели13K

Моделирование планеты маргариток


  1. Лирика
  2. Описание интерфейса
  3. Декомпозиция
  4. Модель
  5. Логика

1. Лирика


Давным-давно, не помню где, я узнал об одном удивительном эксперименте, начало описания было такое: Представьте себе планету, примерно такую, как Земля, которая вращается вокруг звезды примерно такой, как Солнце. На планете есть жизнь, но не очень разнообразная — всего два вида маргариток — черные и белые. Представили? Какой заход! Автор красавчик, почти Экзюпери.
Читать дальше →

Документируем и тестируем REST API с помощью SpringRestDocs

Время на прочтение11 мин
Охват и читатели26K
Добрый день, хочу затронуть тему документирования REST API. Сразу же оговорюсь, этот материал будет ориентирован на инженеров работающих в Spring экосистеме.
На нескольких последних проектах я использовал фреймворк SpringRestDocs, он успешно закрепился в портфолио, был показан знакомым, которые также начали успешно его применять и теперь я хочу поделиться с Вами в статье о его возможностях и преимуществах. Статья позволит разобраться с применением SpringRestDocs и начать его использовать.
Читать дальше →

«В ЕЕ всегда есть альтернатива» — Дмитрий Александров (T-Systems) о Java EE / EE4J

Время на прочтение6 мин
Охват и читатели8K


В последнее время вокруг Java EE много шумихи: сначала выход восьмой версии, затем новость о переходе в Eclipse Foundation и о переименовании. Но многие обсуждения новостей сводятся к тому, что люди думают о новом названии EE4J. Мы решили этим не ограничиваться и расспросить Дмитрия Александрова (ведущего эксперта-программиста в T-Systems): он и имеет дело с Java EE в своей работе, и активен в EE-сообществе, и выступает с EE-докладами на конференциях. Так что вопросы мы ему задали и с точки зрения «применимость в вашей работе», и с точки зрения «что думает сообщество в целом», и заодно про доклады: он как раз уже завтра выступит у нас на Joker.
Читать дальше →

Не ждем, а готовимся к переходу на новые стандарты криптографической защиты информации

Время на прочтение18 мин
Охват и читатели42K
В информационном мире и Digital-Банке само собой разумеется – Digital Security и Digital Signature.

Криптография позволяет нам защитить информацию от подмены и однозначно установить ее правообладателя посредством усиленной электронной подписи.

Криптография дает возможность закрыть для посторонних глаз информацию конфиденциального характера с помощью шифрования.

Как применять криптографию в соответствии с законодательством и ладу с регуляторами?

Речь пойдет о правовых аспектах и об организационно-технических мероприятиях в рамках официального перехода на национальные стандарты в области криптографической защиты информации ГОСТ Р 34.11-2012 «Функция хэширования» и ГОСТ Р 34.10-2012 «Процессы формирования и проверки электронной цифровой подписи».

Переход осуществляется в средствах электронной подписи, применяемых для информации, не содержащей сведений, составляющих государственную тайну, в случаях, подлежащих регулированию со стороны ФСБ России в соответствии с действующей нормативной правовой базой.
Читать дальше →

Kotlin DSL: Теория и Практика

Время на прочтение17 мин
Охват и читатели77K

Sql, RegExp, Gradle — что их объединяет? Всё это примеры использования проблемно-ориентированных языков или DSL (domain-specific language). Каждый такой язык решает свою узконаправленную задачу, например, запрос данных из БД, поиск совпадений в тексте или описание процесса сборки приложения. Язык Kotlin предоставляет большое количество возможностей для создания собственного проблемно-ориентированного языка. В ходе статьи мы разберемся, какие инструменты есть в арсенале программиста, и реализуем DSL для предложенной предметной области.


Весь синтаксис, представленный в статье, я объясню максимально просто, однако, материал рассчитан на практикующих инженеров, которые рассматривают Kotlin, как язык для построения проблемно-ориентированных языков. В конце статьи будут приведены недостатки, к которым нужно быть готовым. Используемый в статье код актуален для Kotlin версии 1.1.4-3 и доступен на GitHub.


Читать дальше →