Java Эванс Б.Java купитьJava. Новое поколение разработкиJava. Новое поколение разработки Эванс Б.Java. Новое поколение разработки купить
Java
Java Эванс Б.
Java купить
Java. Новое поколение разработки
Java. Новое поколение разработки Эванс Б.
Java. Новое поколение разработки купить

Java. Новое поколение разработки, Эванс Б., Вербург М.

499 грн.

Артикул: pit008 Категория: Метки: ,

Описание

Здесь можно купить: Java. Новое поколение разработки, Эванс Б. книга

Издательство — Питер

Язык — русский

Обложка — Мягкая обложка

Год издания — 2013

Количество страниц — 560

ISBN — 978-5-496-00544-9

Бумага — белая, офсетная

О книге Java. Новое поколение разработки, Эванс Б.

В этой книге представлен оригинальный и практичный взгляд на новые возможности Java 7 и новые языки для виртуальной машины Java (JVM), а также рассмотрены некоторые вспомогательные технологии, необходимые для создания Java-программ завтрашнего дня.Книга начинается с подробного описания новшеств Java 7, таких как работа с ресурсами в блоке try (конструкция try-with-resources) и новый неблокирующий ввод-вывод (NIO.2). Далее вас ждет экспресс-обзор трех сравнительно новых языков для виртуальной машины Java — Groovy, Scala и Clojure. Вы увидите четкие понятные примеры, которые помогут вам ознакомиться с десятками удобных и практичных приемов. Вы изучите современные методы разработки, обеспечения параллелизма, производительности, а также многие другие интересные темы.В этой книге:— новые возможности Java 7;— вводный курс по работе с языками Groovy, Scala и Clojure;— обсуждение проблем многоядерной обработки и параллелизма;— функциональное программирование на новых языках для JVM;— современные подходы к тестированию, сборке и непрерывной интеграции.

Java. Новое поколение разработки, Эванс Б., Вербург М. оглавление

Вступление

Предисловие

Благодарности

Лондонское Java-сообщество

www.coderanch.com

Manning publications

Особые благодарности

Благодарности Бена Эванса

Благодарности Мартина Вербурга

Об этой книге

Как работать с этой книгой

Для кого предназначена книга

Дорожная карта

Соглашения в коде и материал для скачивания

Требования к программному обеспечению

Об авторах

Иллюстрация на обложке

От издательства

8 Часть 1. Разработка на Java 7Глава 1. Введение в Java 7

1. Язык и платформа

2. Малое прекрасно — расширения языка Java,

или Проект «Монета»

3. Изменения в рамках проекта «Монета»

3.1. Строки в конструкции switch

3.2. Усовершенствованный синтаксис для числовых

литералов

3.3. Усовершенствованная обработка исключений

3.4. Использование ресурсов в блоке try (try-with-resources)

3.5. Ромбовидный синтаксис

3.6. Упрощенный вызов методов с переменным

количеством аргументов

4. Резюме

Глава 2. Новый ввод-вывод

1. История ввода-вывода в Java

1.1. Java 1.0–1.3

1.2. Java 1.4 и неблокирующий ввод-вывод

1.3. Введение в NIO.2

2. Path — основа файлового ввода-вывода

2.1. Создание пути

2.2. Получение информации о пути

2.3. Избавление от избыточности

2.4. Преобразование путей

2.5. Пути NIO.2 и класс File, существующий в Java

3. Работа с каталогами и деревьями каталогов

3.1. Поиск файлов в каталоге

3.2. Движение по дереву каталогов

92.4. Ввод-вывод файловой системы при работе с NIO.2

4.1. Создание и удаление файлов

4.2. Копирование и перемещение файлов

4.3. Атрибуты файлов

4.4. Быстрое считывание и запись данных

4.5. Уведомление об изменении файлов

4.6. SeekableByteChannel

5. Асинхронные операции ввода-вывода

5.1. Стиль с ожиданием

5.2. Стиль с применением обратных вызовов

6. Окончательная шлифовка технологии сокет — канал

6.1. NetworkChannel

6.2. MulticastChannel

7. Резюме

Часть 2. Необходимые технологииГлава 3. Внедрение зависимостей

1. Дополнительные знания: понятие об инверсии управления

и внедрении зависимостей

1.1. Инверсия управления

1.2. Внедрение зависимостей

1.3. Переход к внедрению зависимостей

2. Стандартизированное внедрение зависимостей в Java

2.1. Аннотация @Inject

2.2. Аннотация @Qualifier

2.3. Аннотация @Named

2.4. Аннотация @Scope

2.5. Аннотация @Singleton

2.6. Интерфейс Provider

10 3.3. Guice 3 — эталонная реализация внедрения зависимостей

в Java

3.1. Знакомство с Guice

3.2. Морские узлы — различные связи в Guice

3.3. Задание области видимости для внедренных объектов

в Guice

4. Резюме

Глава 4. Современная параллельная обработка

1. Теория параллелизма — базовый пример

1.1. Рассмотрение модели потоков в Java

1.2. Структурные концепции

1.3. Как и в каких случаях возникает конфликт

1.4. Источники издержек

1.5. Пример обработчика транзакций

2. Параллельная обработка с блочной структурой (до Java 5)

2.1. Синхронизация и блокировки

2.2. Модель состояния для потока

2.3. Полностью синхронизированные объекты

2.4. Взаимные блокировки

2.5. Почему synchronized?

2.6. Ключевое слово volatile

2.7. Неизменяемость

3. Составные элементы современных параллельных приложений

3.1. Атомарные классы — java.util.concurrent.atomic

3.2. Блокировки — java.util.concurrent.locks

3.3. CountDownLatch

3.4. ConcurrentHashMap

3.5. CopyOnWriteArrayList

3.6. Очереди

114.4. Контроль исполнения

4.1. Моделирование задач

4.2. ScheduledThreadPoolExecutor

5. Фреймворк fork/join (ветвление/слияние)

5.1. Простой пример fork/join

5.2. ForkJoinTask и захват работы

5.3. Параллелизация проблем

6. Модель памяти языка Java (JMM)

7. Резюме

Глава 5. Файлы классов и байт-код

1. Загрузка классов и объекты классов

1.1. Обзор — загрузка и связывание

1.2. Объекты классов

1.3. Загрузчики классов

1.4. Пример — загрузчики классов при внедрении

зависимостей

2. Использование дескрипторов методов

2.1. MethodHandle

2.2. MethodType

2.3. Поиск дескрипторов методов

2.4. Пример: сравнение рефлексии, использования

посредников и дескрипторов методов

2.5. Почему стоит выбирать дескрипторы методов

3. Исследование файлов классов

3.1. Знакомство с javap

3.2. Внутренняя форма сигнатур методов

3.3. Пул констант

4. Байт-код

4.1. Пример: дизассемблирование класса

4.2. Среда времени исполнения

12 5.4.3. Введение в коды операций

4.4. Коды операций для загрузки и сохранения

4.5. Арифметические коды операций

4.6. Коды операций для контроля исполнения

4.7. Коды операций для активизации

4.8. Коды операций для работы с платформой

4.9. Сокращенные формы записи кодов операций

4

Пример: сцепление (конкатенация) строк

5. invokedynamic

5.1. Как работает invokedynamic

5.2. Пример: дизассемблирование invokedynamic-вызова

6. Резюме

Глава 6. Понятие о повышении производительности

1. Терминологическое описание производительности — базовые

определения

1.1. Ожидание

1.2. Пропускная способность

1.3. Коэффициент использования

1.4. Эффективность

1.5. Мощность

1.6. Масштабируемость

1.7. Деградация

2. Прагматический подход к анализу производительности

2.1. Знайте, что именно вы измеряете

2.2. Умейте проводить измерения

2.3. Знайте, какого уровня производительности вы хотите

достичь

2.4. Знайте, когда следует прекратить оптимизацию

136.2.5. Знайте, какой ценой дается повышение

производительности

2.6. Знайте об опасности поспешной оптимизации

3. Что пошло не так? И почему нас это должно волновать?

3.1. Закон Мура: прошлые и будущие тенденции изменения

производительности

3.2. Понятие об иерархии латентности памяти

3.3. Почему так сложно выполнять оптимизацию

производительности в Java

4. Вопрос времени — от железа и вверх

4.1. Аппаратные часы

4.2. Проблема с nanoTime()

4.3. Роль времени при повышении производительности

4.4. Практический пример: понятие о кэш-промахах

5. Сборка мусора

5.1. Основы

5.2. Отслеживание и очистка

5.3. jmap

5.4. Полезные переключатели виртуальной машины Java

5.5. Чтение журналов сборщика мусора

5.6. Визуализация использования памяти с помощью VisualVM

5.7. Анализ локальности

5.8. Параллельное отслеживание и очистка

5.9. G1 — новый сборщик мусора для Java

6. Динамическая компиляция с применением HotSpot

6.1. Знакомство с HotSpot

6.2. Встраиваемая подстановка методов

6.3. Динамическая компиляция и мономорфные вызовы

6.4. Чтение журналов компиляции

7. Резюме

14 Часть 3. Многоязычное программирование на виртуальной машине JavaГлава 7. Альтернативные языки для виртуальной

машины Java

1. Языку Java недостает гибкости? Это провокация!

1.1. Система согласования

1.2. Концептуальные основы функционального

программирования

1.3. Идиомы словаря и фильтра

2. Языковой зоопарк

2.1. Сравнение интерпретируемых и компилируемых

языков

2.2. Сравнение динамической и статической типизации

2.3. Сравнение императивных и функциональных языков

2.4. Сравнение повторной реализации и оригинала

3. Многоязычное программирование на виртуальной машине Java

3.1. Зачем использовать другой язык вместо Java

3.2. Многообещающие языки

4. Как подобрать для проекта другой язык вместо Java

4.1. Высоки ли риски в области проекта

4.2. Насколько хорошо язык взаимодействует с Java

4.3. Имеется ли хороший инструментарий и поддержка

данного языка на уровне тестов

4.4. Насколько сложно выучить данный язык

4.5. Насколько много разработчиков использует

данный язык

5. Как виртуальная машина Java поддерживает альтернативные

языки

5.1. Среда времени исполнения для не Java-языков

5.2. Фикции компилятора

6. Резюме

15Глава 8. Groovy — динамический приятель Java

1. Знакомство с Groovy

1.1. Компиляция и запуск

1.2. Консоль Groovy

2. Groovy 101 — синтаксис и семантика

2.1. Стандартный импорт

2.2. Числовая обработка

2.3. Переменные, сравнение динамических и статических

типов, а также контекст

2.4. Синтаксис списков и словарей

3. Отличия от Java — ловушки для новичков

3.1. Опциональные точки с запятой и операторы возврата

3.2. Опциональные скобки для параметров методов

3.3. Модификаторы доступа

3.4. Обработка исключений

3.5. Оператор равенства в Groovy

3.6. Внутренние классы

4. Функции Groovy, пока отсутствующие в Java

4.1. GroovyBeans

4.2. Оператор безопасного разыменования

4.3. Оператор Элвис

4.4. Улучшенные строки

4.5. Функциональные литералы

4.6. Первоклассная поддержка для операций с коллекциями

4.7. Первоклассная поддержка работы с регулярными

выражениями

4.8. Простая XML-обработка

5. Взаимодействие между Groovy и Java

5.1. Вызов Java из Groovy

5.2. Вызов Groovy из Java

6. Резюме

16 Глава 9. Язык Scala — мощный и лаконичный

1. Быстрый обзор Scala

1.1. Scala — лаконичный язык

1.2. Сопоставимые выражения

1.3. Case-классы

1.4. Акторы

2. Подходит ли Scala для моего проекта?

2.1. Сравнение Scala и Java

2.2. Когда и каким образом приступать к использованию

Scala

2.3. Признаки, указывающие, что Scala может не подойти

для вашего проекта

3. Как вновь сделать код красивым с помощью Scala

3.1. Использование компилятора и REPL

3.2. Выведение типов

3.3. Методы

3.4. Импорт

3.5. Циклы и управляющие структуры

3.6. Функциональное программирование на Scala

4. Объектная модель Scala — знакомая, но своеобразная

4.1. Любая сущность — это объект

4.2. Конструкторы

4.3. Типажи

4.4. Одиночка и объект-спутник

4.5. Case-классы и сопоставимые выражения

4.6. Предостережение

5. Структуры данных и коллекции

5.1. Список

5.2. Словарь

5.3. Обобщенные типы

179.6. Знакомство с акторами

6.1. Весь код — театр

6.2. Обмен информацией с акторами через почтовый ящик

7. Резюме

Глава 10. Clojure: программирование повышенной

надежности

1. Введение в Clojure

1.1. Hello World на языке Clojure

1.2. Знакомство с REPL

1.3. Как делаются ошибки

1.4. Учимся любить скобки

2. Поиск Clojure — синтаксис и семантика

2.1. Базовый курс по работе со специальными формами

2.2. Списки, векторы, словари и множества

2.3. Арифметика, проверка на равенство и другие операции

3. Работа с функциями и циклами в Clojure

3.1. Простые функции Clojure

3.2. Макросы чтения и диспетчеризация

3.3. Функциональное программирование и замыкания

4. Введение в последовательности Clojure

4.1. Ленивые последовательности

4.2. Последовательности и функции с переменным

количеством аргументов

5. Взаимодействие между Clojure и Java

5.1. Вызов Java из Clojure

5.2. Тип Java у значений Clojure

5.3. Использование посредников Clojure

5.4. Исследовательское программирование в среде REPL

5.5. Использование Clojure из Java

18 10.6. Параллелизм в Clojure

6.1. Функции future и pcall

6.2. Ссылки

6.3. Агенты

7. Резюме

Часть 4. Создание многоязычного проектаГлава 11. Разработка через тестирование

1. Суть разработки через тестирование

1.1. Образец разработки через тестирование с одним

случаем использования

1.2. Образец разработки через тестирование с несколькими

случаями использования

1.3. Дальнейшие размышления о цикле «красный —

зеленый — рефакторинг»

1.4. JUnit

2. Тестовые двойники

2.1. Пустой объект

2.2. Объект-заглушка

2.3. Поддельный объект

2.4. Подставной объект

3. Знакомство со ScalaTest

4. Резюме

Глава 12. Сборка и непрерывная интеграция

1. Знакомство с Maven 3

2. Экспресс-проект с Maven 3

3. Maven 3 — сборка java7developer

3.1. Файл POM

3.2. Запуск примеров

1912.4. Jenkins — обеспечение непрерывной интеграции

4.1. Базовая конфигурация

4.2. Настройка задачи

4.3. Выполнение задачи

5. Параметры кода в Maven и Jenkins

5.1. Установка плагинов Jenkins

5.2. Обеспечение согласованности кода с помощью

плагина Checkstyle

5.3. Обеспечение качества кода с помощью FindBugs

6. Leiningen

6.1. Знакомство с Leiningen

6.2. Архитектура Leiningen

6.3. Пример: Hello Lein

6.4. REPL-ориентированная разработка через

тестирование с применением Leiningen

6.5. Упаковка и развертывание кода с помощью Leiningen

7. Резюме

Глава 13. Быстрая веб-разработка

1. Проблема с веб-фреймворками на основе Java

1.1. Почему компиляция Java не подходит для быстрой

веб-разработки

1.2. Почему статическая типизация не подходит

для быстрой веб-разработки

2. Критерии при выборе веб-фреймворка

3. Знакомство с Grails

4. Экспресс-проект с Grails

4.1. Создание объекта предметной области

4.2. Разработка через тестирование

4.3. Сохраняемость объектов предметной области

4.4. Создание тестовых данных

4.5. Контроллеры

20 13.4.6. Виды GSP/JSP

4.7. Скаффолдинг и автоматическое создание

пользовательского интерфейса

4.8. Быстрая циклическая разработка

5. Дальнейшее исследование Grails

5.1. Логирование

5.2. GORM — объектно-реляционное отображение

5.3. Плагины Grails

6. Знакомство с Compojure

6.1. Hello World с Compojure

6.2. Ring и маршруты

6.3. Hiccup

7. Пример проекта с Compojure: «А не выдра ли я?»

7.1. Настройка программы «А не выдра ли я?»

7.2. Основные функции в программе «А не выдра ли я?»

8. Резюме

Глава 14. О сохранении основательности

1. Чего ожидать в Java 8

1.1. Лямбда-выражения (замыкания)

1.2. Модуляризация (проект Jigsaw)

2. Многоязычное программирование

2.1. Межъязыковые взаимодействия и метаобъектные

протоколы

2.2. Многоязычная модуляризация

3. Будущие тенденции параллелизма

3.1. Многоядерный мир

3.2. Параллельная обработка, управляемая во время

исполнения

2114.4. Новые направления в развитии виртуальной машины Java

4.1. Конвергенция виртуальных машин

4.2. Сопрограммы

4.3. Кортежи

5. Резюме

ПриложенияПриложение A. Установка исходного кода

java7developer

А.1. Структура исходного кода java7developer

А.2. Скачивание и установка Maven

А.3. Запуск сборки java7developer

А.3.1. Однократная подготовка сборки

А.3.2. Очистка

А.3.3. Компиляция

А.3.4. Тестирование

А.4. Резюме

Приложение B. Синтаксис и примеры паттернов

подстановки

B.1. Синтаксис паттернов подстановки

B.2. Примеры паттернов подстановки

Приложение C. Установка альтернативных языков

для виртуальной машины Java

C.1. Groovy

C.1.1. Скачивание Groovy

C.1.2. Установка Groovy

22 C.2. Scala

C.3. Clojure

C.4. Grails

C.4.1. Скачивание Grails

C.4.2. Установка Grails

Приложение D. Скачивание и установка Jenkins

D.1. Загрузка Jenkins

D.2. Установка Jenkins

D.2.1. Запуск WAR-файла

D.2.2. Установка WAR-файла

D.2.3. Установка специализированного пакета

D.2.4. Первый запуск Jenkins

Приложение E. java7developer — Maven POM

E.1. Конфигурация сборки

E.2. Управление зависимостями

Также вы можете оставить вопрос или отзыв о книге: Java. Новое поколение разработки, Эванс Б.

Отзывы

Отзывов пока нет.

Будьте первым, кто оставил отзыв на “Java. Новое поколение разработки, Эванс Б., Вербург М.”

Ваш e-mail не будет опубликован. Обязательные поля помечены *