Выбрать главу
Листинг 1.12. Использование нового пакета ввода/вывода

Path path = Paths.get("source.txt");

boolean exists = Files.exists(path);

boolean isDirectory = Files.isDirectory(path);

boolean isExecutable = Files.isExecutable(path);

boolean isHidden = Files.isHidden(path);

boolean isReadable = Files.isReadable(path);

boolean isRegularFile = Files.isRegularFile(path);

boolean isWritable = Files.isWritable(path);

long size = Files.size(path);

// Копирует файл

Files.copy(Paths.get("source.txt"), Paths.get("dest.txt"));

// Считывает текстовый файл

List<String> lines = Files.readAllLines(Paths.get("source.txt"), UTF_8);

for (String line: lines) {

··System.out.println(line);

}

// Удаляет файл

Files.delete(path);

Обзор спецификаций Java EE

Java EE — это обобщающая спецификация, которая объединяет и интегрирует остальные. На сегодняшний день для обеспечения совместимости с Java EE 7 сервер приложений должен реализовывать 31 спецификацию, а разработчику для оптимального использования контейнера необходимо знать тысячи API. Несмотря на то что требуется знать столько спецификаций и API, основная цель Java EE 7 — упростить платформу, предоставив несложную модель, основанную на POJO, веб-профиле и отсечении некоторых неактуальных технологий.

Краткая история Java EE

На рис. 1.4 кратко изложена 14-летняя эволюция Java EE. Раньше Java EE называлась J2EE. Платформа J2EE 1.2 была разработана компанией Sun и впервые выпущена в 1999 году в качестве обобщающей спецификации, содержащей десять запросов JSR. В то время всеобщий интерес вызывала архитектура CORBA, поэтому J2EE была изначально нацелена на работу с распределенными системами. В ней уже существовала архитектура Enterprise Java Beans (EJB) с поддержкой удаленных служебных объектов как с сохранением состояния, так и без него и с возможностью поддержки хранимых объектов (компонентов-сущностей EJB). Они были основаны на транзакционной и распределенной компонентной модели, а в качестве базового протокола использовали RMI–IIOP (протокол удаленного вызова методов и обмена между ORB в Интернете). Веб-уровень содержал сервлеты и страницы JSP, а для сетевой коммуникации использовалась служба сообщений Java (JMS).

Рис. 1.4. История J2ЕЕ/Java EE

Начиная с J2EE 1.3, разработкой спецификаций занималась группа Java Community Process (JCP) в рамках запроса JSR 58. Поддержка компонентов-сущностей стала обязательной, а в компонентах EJB появились дескрипторы развертывания XML для хранения метаданных (которые были сериализованы в отдельном файле в EJB 1.0). В этой версии была решена проблема издержек, связанных с передачей аргументов по значению при использовании удаленных интерфейсов. Для ее устранения появились локальные интерфейсы и возможность передачи аргументов по ссылке. Была разработана архитектура JCA (J2EE Connector Architecture), позволившая связать Java EE с корпоративной информационной системой (EIS).

Примечание

CORBA была разработана в 1988 году именно потому, что корпоративные системы становились распределенными (примеры таких систем: Tuxedo и CICS). Затем последовали EJB и J2EE, которые создавались на десять лет позже, но также предназначались для работы с распределенными системами. К моменту разработки J2EE CORBA имела основательную поддержку и являлась промышленным ПО, однако компании нашли более простые и гибкие способы соединения распределенных систем, такие как веб-службы SOAP или REST. Поэтому для большинства корпоративных систем исчезла необходимость применения CORBA.

В 2003 году в J2EE 1.4 (запрос на спецификацию JSR 151) входило 20 спецификаций и добавилась поддержка веб-служб. Спецификация EJB 2.1 разрешала вызов компонент-сеансов EJB по протоколам SOAP/HTTP. Была создана служба времени для вызова компонентов в указанное время или с заданным интервалом. Эта версия оптимизировала поддержку сборки и развертывания приложений. И хотя сторонники J2EE предсказывали ей большое будущее, не весь обещанный функционал был реализован. Системы, созданные с ее применением, были очень сложными, а на их разработку тратилось слишком много времени даже при самых тривиальных требованиях пользователя. J2EE считалась тяжеловесной компонентной моделью, сложной для тестирования, развертывания и запуска. Как раз в то время появились фреймворки Struts, Spring и Hibernate, предложившие новый способ разработки корпоративного приложения.