Class).
Полезные материалы по всему, что может быть полезно разработчику на Java.
Class).URL в строке остается прежним;
• Выполняется быстрее метода sendRedirect();
• Определён в интерфейсе RequestDispatcher.
sendRedirect():
• Выполняется на стороне клиента;
• Клиенту возвращается ответ 302 (redirect) и запрос перенаправляется на другой сервер;
• Может использоваться только с клиентами HTTP;
• Разрешается применять для внедрения сервлета в другой контекст;
• URL адрес изменяется на адрес нового ресурса;
• Медленнее forward() т.к. требует создания нового запроса;
• Определён в интерфейсе HttpServletResponse.final бессмысленно, т.к. все методы интерфейсов неявно объявляются как абстрактные, т.е. их невозможно выполнить, не реализовав где-то еще, а этого нельзя будет сделать, если у метода идентификатор final.Future – интерфейс, который представляет пока еще недовычисленный результат. Когда породившая его асинхронная операция заканчивается, он заполняется значением. Метод get блокирует выполнение до получения результата, isDone проверяет его наличие. К примеру результат выполнения задач в ExecutorService, ForkJoinTask, реализует интерфейс Future.
CompletableFuture появился в Java 8. Это класс-реализация старого интерфейса Future, а значит всё сказанное выше справедливо и для него. Вдобавок к этому, CompletableFuture реализует работу с отложенными результатами посредством коллбэков. Метод thenApply регистрирует код обработки значения, который будет автоматически вызван позже, когда это значение появится.
В Java 9 прогресс пошел дальше, и появилась библиотека Flow API. Это встроенная реализация реактивных стримов. Реактивный стрим, сильно упрощая, – это более общий случай, последовательность отложенных значений. Другая их реализация – популярная, но не входящая в стандарт библиотека Reactive Extensions (RxJava).