Java. Полное руководство. 8-е издание. С. Н. Тригуб Перевод с английского и редакция
Скачать 25.04 Mb.
|
Глава 20. Исследование NIO Классы NIO Основы NIO Наборы символов и селекторы Дополнения, внесенные в NIO (комплект JDK 7) Интерфейс Класс Files Класс Paths Интерфейсы атрибутов файла Классы FileSystem, FileSystems и Filestore Использование системы NIO Использование системы NIO для канального ввода-вывода Использование системы NIO для потокового ввода-вывода Использование системы NIO для операций файловой системы Примеры использования каналов до JDK 7 Чтение из файла до JDK 7 Запись в файл до JDK 7 Глава 21. Сеть Основы работы с сетью Сетевые классы и интерфейсы Класс 679 Методы-фабрики Методы экземпляра Классы Inet4Address и Inet6Address Клиентские сокеты T C P /IP Класс URL Класс URLConnection Класс HttpURLConnection Класс URI Файлы cookie 690 Серверные сокеты T C P /IP Дейтаграммы Класс DatagramSocket Класс DatagramPacket Пример работы с дейтаграммами Глава 22. Класс A p p le t Два типа аплетов Основы аплетов Класс Арр l e t Архитектура аплетов Шаблон аплета Инициализация и прекращение работы аплета Переопределение метода update () Простые методы отображения аплетов Запрос перерисовки Простой аплет с баннером Использование строки состояния 707 Дескриптор Передача параметров аплетам Усовершенствование аплета баннера Методы getDocumentBase ( ) и getCodeBase () Интерфейс и метод showDocument ( ) Интерфейс Интерфейс Арр letStub Консольный вывод Глава 23. Обработка событий Два механизма обработки событий Модель делегирования событий События Источники событий Слушатели событий Классы событий Класс Act ionEvent Класс Ad jus tmentEvent Класс ComponentEvent Класс ContainerEvent Класс FocusEvent Класс InputEvent Класс ItemEvent Класс KeyEvent Класс MouseEvent Класс Класс Text Event Класс WindowEvent Источники событий Интерфейсы слушателей событий Интерфейс Интерфейс Интерфейс Component Li st ener Интерфейс Интерфейс FocusListener Интерфейс ItemListener Интерфейс Интерфейс Интерфейс MouseMotionListener Интерфейс Интерфейс TextListener Интерфейс WindowFocusListener Интерфейс WindowListener Использование модели делегирования событий Обработка событий мыши Обработка событий клавиатуры Классы адаптеров Вложенные классы Анонимные вложенные классы Содержание 1 9 2 0 Содержание Глава 24. Введение в библиотеку AWT: работа с окнами, графикой и текстом Классы библиотеки AWT Основы окон Класс Component Класс Container Класс Panel Класс Window Класс Frame Класс Canvas Работа с рамочными окнами Установка размеров окна Сокрытие и отображение окна Установка заголовка окна Закрытие рамочного окна Создание рамочного окна в аплете Обработка событий в рамочном окне Создание оконной программы Отображение информации внутри окна Работа с графикой Рисование линий Рисование прямоугольников Рисование эллипсов и окружностей Рисование дуг Рисование многоугольников Установка размеров графики Работа с цветом Методы класса C o lo r Установка режима рисования Работа со шрифтами Определение доступных шрифтов Создание и выбор шрифта Получение информации о шрифте Управление выводом текста с использованием класса FontMetries 774 Отображение множества строк текста Центрирование текста Выравнивание многострочного текста Глава 25. Использование элементов управления, диспетчеров компоновки и меню библиотеки AWT Основы элементов управления Добавление и удаление элементов управления Реакция на действия над элементами управления Исключение HeadlessException Метки Использование кнопок Обработка кнопок Использование флажков 789 Содержание 21 Обработка флажков 789 Класс Элементы управления выбором 792 Обработка списков выбора 793 Использование списков 794 Обработка списков 796 Управление полосами прокрутки 797 Обработка полос прокрутки 799 Использование класса Text Fie Обработка текстовых полей 802 Использование класса Text Диспетчеры компоновки 805 Класс Класс Использование класса Класс Класс Класс Полосы меню и меню 819 Диалоговые окна 824 Класс Обработка событий при расширении компонентов библиотеки Расширение класса Расширение класса Расширение группы флажков 833 Расширение класса Расширение класса Расширение класса Несколько слово переопределении метода paint (Форматы файлов 837 Глава 26. Изображения Основы работы с изображениями создание, загрузка и отображение 838 Создание объекта класса Загрузка изображения 838 Отображение изображения 839 Интерфейс Двойная буферизация 842 Класс Интерфейс Класс Интерфейс Класс Класс Фильтр класса Фильтр класса Аппликационная анимация 865 Дополнительные классы обработки изображений 2 2 Содержание Глава 27. Параллельные утилиты Пакеты параллельного API Пакет java.util.concurrent Пакет j ava.util.concurrent.atomic Пакет j ava.ut i1.concurrent.locks Использование объектов синхронизации Класс Semaphore Класс CountDownLatch Класс CyclicBarrier Класс Exchanger Класс Phaser Использование исполнителя Простой пример исполнителя Использование интерфейсов Callable и Future Перечисление TimeUnit Параллельные коллекции Блокировки Атомарные операции Параллельное программирование при помощи инфраструктуры F o rk /Jo in Framework Основные классы инфраструктуры F o rk /Jo in Framework Стратегия разделяй и властвуй Первый простой пример ветвления/объединения Влияние уровня параллелизма Пример применения класса RecursiveTask Pattern Класс Matcher Синтаксис регулярного выражения Пример совпадения с шаблоном Два варианта сопоставления с шаблоном Изучение регулярных выражений Рефлексия Дистанционный вызов методов 931 Клиент-серверное приложение, использующее RMI Форматирование текста Класс DateFormat Класс SimpledateFormat 936 Содержание Часть III. Разработка программного обеспечения с использованием Java Глава 29. Компоненты Java Bean Что такое Java Bean Преимущества компонентов Java Bean 942 Самодиагностика Проектные шаблоны для свойств Проектные шаблоны для событий Методы и проектные шаблоны Использование интерфейса о Связанные и ограниченные свойства Постоянство 945 Конфигураторы 946 API Java Beans Класс Introspector Класс PropertyDescriptor Класс EventSetDescriptor Класс MethodDescriptor Пример компонента Java Bean Глава 30. Введение в библиотеку Swing Истоки библиотеки Swing Классы библиотеки Swing построены на основе библиотеки AWT Две ключевые особенности библиотеки Swing Компоненты библиотеки Swing являются облегченными Библиотека Swing поддерживает подключаемый внешний вид Архитектура MVC Компоненты и контейнеры Компоненты Контейнеры Панели контейнеров верхнего уровня Пакеты библиотеки Swing Простое приложение Swing Обработка событий Создание аплета Swing Рисование с использованием библиотеки Swing Основы рисования Вычисление области рисования Пример рисования Глава 31. Дополнительные сведения о библиотеке Swing Классы JLabel и Imagelcon Класс JTextField Кнопки библиотеки Swing Класс JBu11 on Класс JToggleButton Флажки Переключатели 984 2 4 Содержание Класс JTabbedPane Класс JScrollPane Класс JList Класс JComboBox Деревья Класс JTable Продолжайте изучать библиотеку Swing Глава 32. Сервлеты Предварительные сведения Жизненный цикл сервлета Возможности разработки сервлетов Использование контейнера Tomcat Простой сервлет Создание и компиляция исходного кода сервлета Запуск контейнера Tomcat Запуск веб-браузера и запрос сервлета Интерфейс Servlet API Пакет j avax.servlet Интерфейс Интерфейс Интерфейс Интерфейс Интерфейс Класс GenericServlet Класс ServletlnputStream Класс ServletOutputStream Класс ServletException Чтение параметров сервлета Пакет Интерфейс Интерфейс Интерфейс Интерфейс Класс Cookie Класс HttpServlet Класс HttpSessionEvent Класс HttpSessionBindingEvent Обработка запросов и ответов HTTP Обработка запросов HTTP GET Обработка запросов HTTP POST Использование файлов cookie Отслеживание сеансов Часть IV. Применение Java Глава 33. Финансовые аплеты и сервлеты Расчет платежей по ссуде Поля аплета RegPay Метод init ( ) 1034 Метод makeGUI () Метод a c t i o n P e r f o r m e d () Метод co m p u te () Расчет будущей стоимости вклада Расчет первоначальной суммы вклада, необходимой для достижения будущей суммы Расчет первоначальной суммы вклада, необходимой для получения желаемого годового дохода Нахождение максимального годового дохода для данной суммы вклада Нахождение остатка баланса по ссуде Создание финансовых сервлетов Преобразование аплета RegPay в сервлет 1057 Сервлет RegPayS Самостоятельная работа Загрузка данных из Интернета Глава 34, Создание утилиты загрузки на языке Java Обзор утилиты Download Manager Класс Download Переменные класса Download Конструктор класса Down load Метод download () Метод run () Метод stateChanged () Методы действия и средства доступа Класс ProgressRenderer Класс DownloadsTableModel Метод addDownload () Метод clearDownload () Метод getColumnClass () Метод getValueAt () Метод update () Класс DownloadManager Переменные класса DownloadManager Конструктор класса DownloadManager Метод verifyUrl () Метод tableSelectionChanged () Метод updateButtons () Обработка событий действий Компиляция и запуск утилиты Download Manager Расширение утилиты Download M anager Приложение. Использование комментариев документации Дескрипторы утилиты j avado с Дескриптор $ author Дескриптор {@code} Дескриптор ©deprecated Дескриптор {@docRoot} Дескриптор @ except ion Содержание 2 5 2 6 Содержание Дескриптор {@inheritDoc} Дескриптор {@link} Дескриптор {@linkplain} Дескриптор {©literal} Дескриптор @param Дескриптор ©return Дескриптор © see Дескриптор ©serial Дескриптор ©serialData Дескриптор ©serialField Дескриптор ©since Дескриптор ©throws Дескриптор {©value} Дескриптор ©version Общая форма комментариев документации Вывод утилиты j avadoc Пример использования комментариев документации Предметный указатель 1093 Об авторе Герберт Шилдт — известный во всем мире автор множества книг, посвященных программированию на языках Java, C++, Си С. Его книги продаются миллионными тиражами и переводятся на множество языков мира. К успешным книгам Герберта по языку Java относятся Java: руководство для начинающих Java: методики программирования Шилдта; SWING: руководство для начинающих и Искусство программирования на Java. Бестселлерами появляются Полный справочник по C++; C# 4: полное руководство и С полное руководство, классическое издание Интересуясь всеми компьютерными аспектами, он уделяет основное внимание языкам программирования, включая компиляторы, интерпретаторы и языки управления роботами. Он также проявляет активный интерес к стандартизации языков. Герберт имеет диплом о высшем образовании, а также ученую степень, которую получил в университете Иллинойса. Дополнительная информация об авторе представлена на его веб-сайте по адресу www. HerbSchildt. О техническом редакторе Д-р Дэни Ковард (Danny Coward) является соавтором по платформам Java Platforms с 1997 года. Он был членом-учредителем группы Java ЕЕ со времен корпорации Sun, членом исполнительного комитета Java Community Process Executive Committee, ведущим соавтором всех выпусков платформ Java Platform (Java SE, Java ME и Java ЕЕ, а также основателем первоначальной группы JavaFX. Введение — один из самых важных и популярных компьютерных языков в мире. Кроме того, он удерживает свое лидерство на протяжении многих лет. В отличие от некоторых других языков программирования, влияние которых со временем уменьшилось, язык Java стал только сильнее. Со времен своего первого выпуска он выдвинулся на передний край программирования для Интернета. Каждая последующая версия укрепляла эту позицию. Сегодня он все еще первый и является наилучшим выбором для разработки веб-ориентированных приложений. Благодаря языку Java стала также возможной современная революция смартфонов, поскольку он используется для написания программ для платформы Android. Просто представьте большая часть современного кода в мире является кодом Java. Язык Java действительно столь важен. Основная причина успеха языка Java — его быстрая изменчивость. Начиная сего первого выпуска 1.0 этот язык непрерывно адаптируется к изменениям в среде программирования и подходов к программированию. Самое главное — он непросто следует тенденциям, а помогает их создавать Способность адаптации язык высокой скорости изменений в компьютерном мире — основная причина, по которой он остается столь успешным языком. Со времени публикации первого издания этой книги в 1996 году, она претерпела множество изменений, которые отражали последовательное развитие языка Java. Это, восьмое, издание адаптировано для Java SE 7, поэтому оно содержит значительный объем нового материала. Например, сюда включено описание расширений языка Project Coin, дополнительных средств NIO (N10.2) и F o rk /Jo in Framework. Как правило, описание новых средств интегрировано в существующие главы, однако, в связи с большим объемом добавлений в NIO, эта тема теперь представлена в отдельной главе. Тем не менее общая структура книги остается такой же. Это значит, что если вы знакомы с предыдущим изданием, будете чувствовать себя комфортно и здесь. Книга для всех программистов Эта книга предназначена для всех программистов — как для новичков, таки для профессионалов. Начинающий программист найдет в ней подробные пошаговые описания и множество чрезвычайно полезных примеров, а углубленное рассмотрение более сложных функций и библиотек Java должно удовлетворить ожидания профессиональных программистов. Для обеих категорий читателей в книге указаны действующие ресурсы и полезные ссылки 3 0 Введение Что внутри Эта книга представляет собой всеобъемлющее руководство по языку Java, описывающее его синтаксис, ключевые слова и фундаментальные принципы программирования. Здесь рассмотрена также значительная часть библиотеки Java API. Книга разделена на четыре части, каждая из которых посвящена отдельному аспекту среды программирования Часть I представляет собой подробный учебник по языку Java. Она начинается с рассмотрения основных понятий, таких как типы данных, операторы, управляющие операторы и классы. Затем описываются наследование, пакеты, интерфейсы, обработка исключений и многопоточное программирование. В заключительных главах этой части рассматриваются аннотации, перечисления, автоупаковка и обобщения. В части II описаны основные аспекты стандартной библиотеки интерфейса прикладного программирования Java. В ней раскрыты такие темы, как строки, ввод-вывод, сетевая обработка, стандартные утилиты, инфраструктура коллекций Collections Framework, аплеты, элементы управления графического интерфейса пользователя (GUI), средства работы с изображениями и параллельной обработки (включая F o rk /Jo in В части Ш рассмотрены три важные технологии Java: Java Beans, сервлеты и Часть IV содержит главы с примерами реального использования Java. Первая глава этой части посвящена разработке нескольких аплетов, которые выполняют популярные финансовые вычисления, такие как вычисление выплаты процентов по ссуде или размера минимального вклада, необходимого для получения желаемого ежемесячного дохода. В этой главе также показано, как преобразовать эти аплеты в сервлеты. В следующей главе этой части описана разработка утилиты загрузки, управляющей загрузкой файлов. К числу выполняемых им функций относятся запуск, останови возобновление передачи данных. Обе главы заимствованы из моей книги Искусство программирования на Java (И.Д. “Вильямс”, 2005), которую я написал в соавторстве с Джеймсом Холмсом (James Коды примеров доступны в веб Помните, что исходные коды всех примеров, приведенных в этой книге, доступны на веб-сайте издательства по адресу www. oraclepressbooks . Особые благодарности Выражаю особую благодарность Патрику Нотону (Patrick N aughton), Джо О Нилу (Joe O ’Neil), Джеймсу Холмсу (James Holms) и Дэни Коварду (Danny П атрик Нотон был одним из создателей языка Java. Он также помог мне в написании первого издания этой книги. Значительная часть материала глав 19, 21 и 26 была предоставлена Патриком. Его проницательность, опыт и энергия в огромной степени способствовали успеху этой книги. При подготовке второго и третьего изданий этой книги Джо О Нил предоставил исходные черновые материалы, которые ныне можно найти в главах 28-29, 31-32. Джо помогал мне при написании нескольких книги я высоко ценю его вклад. И наконец, я горячо благодарю Джеймса Холмса за подготовку материалов главы 34. Джеймс — выдающийся программист и автор. Он был моим соавтором Введение книги Искусство программирования на Java, автором книги Struts: The Complete Reference и соавтором книги JSF: The Complete Reference. Герберт Шилдт Для дальнейшего изучения Эта книга открывает серию книг по программированию, написанных Гербертом Шилдтом. Ниже перечислены другие книги этого автора, которые, несомненно, вас заинтересуют. Если хотите больше узнать о программировании на Java, рекомендую прочесть следующие книги методики программирования Шилдта. И.Д. “Вильямс”, 2008 г. • Java:руководство для начинающих, е изд. И.Д. “Вильямс”, 2012 г. • SWING:руководство для начинающих И.Д. “Вильямс”, 2007 г. • Искусство программирования на Java. И. Д. “Вильямс”, 2005 г. Тем, кто желает изучить язык C++, особенно полезными будут такие книги. • Полный справочник по C++, е изд. И.Д. “Вильямс”, 2011 г методики программирования Шилдта. И.Д. “Вильямс”, 2009 г руководство для начинающих, е изд. И.Д. “Вильямс”, 2005 г базовый курсе изд. И.Д. “Вильямс”, 2011 г Programming From the Ground Up. M Для изучения C# рекомендуем следующие книги Шилдта. • C# 4.0: полное руководство И.Д. “Вильямс”, 2012 г 3.0: руководство для начинающих, е изд И.Д. “Вильямс”, 2009 г. Перечисленные ниже книги помогут в изучении языка С. • С: полное руководство, классическое издание И.Д. “Вильямс”, 2010 г. Если вам нужно быстро получить исчерпывающие ответы, обратитесь к книгам Герберта Ш илдта — признанного во всем мире авторитета в области программиро вания. Соглашения, принятые в этой книге П ри оформлении книги были использованы соглашения, общепринятые в компьютерной литературе. • Новые термины в тексте выделяются курсивом Чтобы обратить внимание читателя на отдельные фрагменты текста, также применяется курсив. • Текст программ, функций, переменных, URL, веб-страниц и другой код представлены моноширинным шрифтом. • Все, что придется вводить с клавиатуры, выделено полужирным моноширинным шрифтом 32 Введение • Знакоместо в описаниях синтаксиса выделено курсивом Это указывает на необходимость заменить его фактическим именем переменной, параметром или другим элементом, который должен находиться на этом месте BINDSIZE= максимальная ширина колонки номер колонки) Пункты меню и названия диалоговых окон представлены следующим образом M enu O ption (Пункт меню). • Разрыв слишком длинных строк кода, не помещающихся на странице, обозначен специальным символом От издательства Вы, читатель этой книги, и есть главный ее критик. Мы ценим ваше мнение и хотим знать, что было сделано нами правильно, что можно было сделать лучше и что еще вы хотели бы увидеть изданным нами. Нам интересно услышать и любые другие замечания, которые вам хотелось бы высказать авторам. Мы ждем ваших комментариев. Вы можете прислать письмо по электронной почте или просто посетить наш веб-сервер, оставив на нем свои замечания. Одним словом, любым удобным для вас способом дайте нам знать, нравится ли вам эта книга, а также выскажите свое мнение о том, как сделать наши книги более подходящими для вас. Посылая письмо или сообщение, не забудьте указать название книги и ее авторов, а также ваш e-mail. Мы внимательно ознакомимся с вашим мнением и обязательно учтем его при отборе и подготовке к изданию следующих книг. Наши координаты i n f o @ w illia m s p u b lis h in g . com WWW: h t t p : / / w w w .w illia m s p u b lis h in g . Адреса для писем из: России: 127055, г. Москва, ул. Лесная, д. 43, стр. Украины 03150, Киева я 152 ЧАСТЬ bbIbbЯзы к Java |