Практическое руководство по изучению языка программирования Java с многочисленными великолепные и реалистичными примерами.

Практическое руководство по Java.

Дэниэл Леук, Патрик Нимейер «Программирование на Java» Эксмо, 2014 год, 1215 стр. (86,5 мб. pdf)

Практическое руководство по изучению языка программирования Java с многочисленными великолепные и реалистичными примерами. Для начинающего программиста пособие станет незаменимым справочником и помощником для достижения профессиональных высот. Опытные программисты найдут в книге многочисленные примеры с объяснением всех тонкостей работы с самыми современными средствами проектирования и создания приложений и многофункциональных сервисов. Все, что есть новое в Java 8 нашло отражение в книге.
ISBN: 978-5-699-71504-6

Предисловие

Перед вами книга о языке и среде программирования Java.

Являетесь ли вы разработчиком программного обеспечения или просто пользуетесь Всемирной паутиной в повседневной жизни, вы, несомненно, слышали о языке Java. Его появление было одной из самых волнующих разработок в истории Всемирной паутины, а приложения языка Java сильно ускорили рост бизнеса во Всемирной паутине за последние 15 лет. Java, пожалуй, самый популярный язык программирования в мире, и его используют миллионы разработчиков на всех мыслимых типах компьютеров. За последнее десятилетие язык Java обогнал такие языки, как C++ и Visual Basic, с точки зрения требований к разработке и фактически стал основным языком для определенных типов разработки, в особенности для сервисов, использующих интернет-технологии. Многие университеты теперь обучают Java на своих начальных курсах вместе с другими важными современными языками. Возможно, в таком университете учитесь и вы…

Эта книга преподаст вам основы Java, такие как интерфейсы API. Книга старается соответствовать своему названию, включая описание языка Java и его библиотек классов, техник программирования и идиом. Мы копнем глубоко в интересных областях и по крайней мере поверхностно осветим остальной материал. По возможности мы предлагаем захватывающие, реалистичные и забавные примеры и избегаем простой каталогизации свойств. Примеры незамысловатые, но намекают на то, что еще можно сделать. Мы не будем разрабатывать очередное великое «убийственное приложение» на этих страницах, но надеемся дать вам отправную точку для многих часов экспериментирования и вдохновенной возни, которые приведут вас к созданию такого приложения своими силами.

Кому следует читать эту книгу.

Эта книга создана для специалистов в компьютерной науке, студентов, людей с техническим образованием и финских хакеров. Она предназначена всем, кто хочет попрактиковаться в языке Java, чтобы потом создавать реальные приложения. Эта книга также может рассматриваться как экспресс-курс по объектно-ориентированному программированию, работе с сетями, GUI и XML. При изучении Java вы получите понятие о мощном и практическом подходе к разработке программного обеспечения, начинающемся с глубокого понимания основ языка Java и его интерфейсов API.

При поверхностном рассмотрении Java выглядит как язык С или C++, поэтому вы получите небольшое преимущество в работе с этой книгой, если у вас есть какой-то опыт программирования на одном из этих языков. Если у вас нет такого опыта, не беспокойтесь. Не проводите слишком много синтаксических параллелей между языком Java и С или C++.

Во многих отношениях Java ведет себя как такие более динамические языки, как Smalltalk и Lisp, Знание другого объектно-ориентированного языка определенно должно помочь, хотя вам, возможно, придется поменять некоторые представления и отучиться от некоторых привычек. Java значительно проще, чем другие языки, такие как C++ и Smalltalk. Если вы внимательно изучите материал по конкретным примерам и посредством собственных экспериментов, мы думаем, вам понравится эта книга.

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

Новые разработки.

Это издание на самом деле является шестым — усовершенствованным и переименованным — после выхода оригинальной популярной книги Learning Java. С каждым изданием мы заботились не только о добавлении нового материала, охватывающего дополнительные свойства, но и о тщательной проверке и обновлении существующего содержания, чтобы объединить информацию н добавить плоды накопленного за годы фактического опыта к этим страницам.

Значительным изменением в последних изданиях является то, что мы уделили меньшее значение использованию апплетов, отражая их меньшую роль в создании интерактивных веб-страниц в последние годы. С другой стороны, мы значительно расширили информацию о веб приложениях Java, веб-сервисах и XML, которые являются развитыми технологиями.

Мы рассмотрели все важные свойства выпуска Java Standard Edition (SE) 7, JDK 1.7 и описали нововведения релиза Java 8. Компания Sun (владелец языка Java до Oracle) неоднократно меняла схему наименования за много лет. Sun придумала термин Java 2, чтобы учесть основные новые изменения, представленные в версии Java 1.2, и ввела термин JDK в пользу SDK.

С шестым выпуском Sun перепрыгнула с версии Java 1.4 до версии Java 5.0, но дала отсрочку термину JDK и оставила свою систему нумерации. После этого у нас появился язык Java 6, и теперь мы добрались до Java 7 и 8.Этот выпуск Java демонстрирует зрелый язык с относительно малыми синтаксическими изменениями, но значительными обновлениями интерфейсов API и библиотек. Мы попытались охватить эти новые свойства и обновить каждый пример в этой книге, чтобы отразить не только современные приемы Java, но и стиль.

Новое в этом издании.

Это значительно переработанное, наиболее полное и современное издание. Оно включает изменения из выпусков Java 6, 7 и 8, которые произошли с последнего издания этой книги. Новые темы этого издания включают:
• новые свойства языка, в том числе вывод типа в обобщениях и улучшенную обработку исключений и автоматический синтаксис управления ресурсами;
• новые утилиты параллельности, включая фреймворк разветвления-соединения;
• новую N10 Files API, которая позволяет реализацию новых типов доступа к файловой системе в Java;
• новые версии Java Servlets API (3.0) и API веб-сервисов, включая использование нового размещения, основанного на аннотациях и встроенного контейнера веб-сервисов;
• новую версию JAXB (2.2) Java XML Binding, включающую использование новых аннотаций для связывания Java с XML;
• улучшенную настольную интеграцию Swing и улучшение ключевых компонентов Swing, таких как JTable;
• обновленные примеры и анализ во всей книге.

Использование этой книги.

Эта книга организована следующим образом.
• Главы 1 и 2 представляют базовый ввод в концепцию Java и учебное пособие для стартового прыжка в Java программирование.
• В главе 3 обсуждаются основные инструменты разработки на Java (компилятор, интерпретатор и упаковщик файлов JAR).
• Главы с 4 по 7 описывают сам язык Java, начиная с основного синтаксиса, а затем обозревают классы и объекты, исключения, массивы, перечисления, комментарии и многое другое.
• Глава 8 описывает базовые и параметризированные типы в Java.
• Глава 9 описывает встроенные возможности потоков и пакет Java Concurrency, который будет особенно интересен для продвинутых программистов.
• Глава 10 описывает текстовую обработку, форматирование, сканирование, строковые утилиты и мощные интерфейсы регулярных выражений API.
• Глава 11 описывает ядро интерфейса API, включая утилиты и коллекции.
• Глава 12 описывает ввод/вывод в Java, потоки, файлы и упаковку N10.
• Главы 13 и 14 описывают работу с сетями в Java, включая сокеты и NIO, URL и RMI.
• Глава 15 описывает веб-приложения, используя небольшие специальные программы — сервлеты, фильтры на их основе и файлы WAR, а также веб-сервисы.
• Главы с 16 по 21 описывают GUI (графический интерфейс пользователя) разработку с Abstract Window Toolkit (AWT — набор инструментальных средств для абстрактных окон) и Swing, который представляет графический интерфейс пользователя и поддержку изображений.
• Глава 22 описывает архитектуру компонента JavaBeans и знакомит с NetBeans IDE.
• Глава 23 описывает апплеты — небольшие прикладные программы.
• Глава 24 описывает Java API для работы с XML и XSLT, включая XML Schema, валидацию, XPath и XInclude, так же как XML, связанный с JAXB.
• Приложение А описывает использование IDE Eclipse с примерами в книге.
• Приложение Б описывает BeanShell, облегченный язык скриптов для разработки на Java от авторов этой книги.
Если вы похожи на нас, то не станете читать книгу от корки до корки. Если вы и впрямь такие же, как мы, вы обычно вообще не читаете
введение.
Однако на случай, если вы увидите это вовремя, вот несколько советов.
• Если вы опытный программист, который должен выучить Java за следующие пять минут, вы, вероятно, ищете примеры. Можете для начала просмотреть мельком главу 2. Если это вас не прельщает, вам стоит хотя бы заглянуть в главу 3, в которой объясняется, как использовать компилятор и интерпретатор, или приложение А, в котором показано, как запустить примеры в IDE Eclipse. С этого вам следует начать.
• Главы с 12 по 15 необходимы, если вас интересует создание продвинутых сетевых или веб-приложений и сервисов. Это одна из наиболее интересных и важных частей Java.
• Главы с 16 по 22 описывают графические функции Java и компоненты архитектуры. Вам следует это прочесть, если вы интересуетесь написанием графических приложений Java или коротких программ-апплетов.
• Глава 24 описывает, как API Java работает с XML, включая SAX, DOM, DTD, XML Schema, и как, используя XSL, выйти в веб-среду. Технология XML становится ключом для кросс-платформенной разработки.

Веб-ресурсы.

Существует множество веб-ресурсов с информацией о Java. Официальный сайт Oracle по языку Java — java.sun.com; ищите здесь программное обеспечение, обновления и релизы Java. Здесь вы найдете инструментарий JDK, который включает компилятор, интерпретатор и другие инструменты.

Примеры к книге.

Вам также следует посетить сайт github.com/patniemeyer/ leamingjava. Здесь вы найдете исходные коды примеров из этой книги.
Условные обозначения, использованные в этой книге
Условные обозначения при помощи шрифта в этой книге довольно просты.

Курсив используется для выделения:
• имен путей, файлов и программ;
• новых терминов, где они определяются;
• потоков.
Полужирный шрифт используется для выделения;
• веб-адресов, таких как имена доменов и URL-адреса.
Моноширинный шрифт используется для выделения:
• любых элементов языка Java, включая имена методов, переменные и имена классов;
• тегов, которые могут появиться в документах HTML или XML;
• ключевых слов, объектов и переменных среды.
Моноширинный полужирный шрифт используется для выделения:
• текста, который набирается пользователем в командной строке. Моноширинный курсивный шрифт используется для выделения:
• заменяемых фрагментов кода.

В тексте мы указываем пару пустых круглых скобок после имени метода, чтобы отличать методы от переменных и других элементов.
В листинге исходного кода Java мы придерживаемся соглашений по программированию, наиболее часто используемых в сообществе Java. Имена классов начинаются с заглавных букв; имена методов и переменных — со строчных. Все буквы в именах констант в верхнем регистре.

Мы не используем подчеркиваний, чтобы разделять слова в длинном названии; придерживаясь распространенной практики, мы пишем с большой буквы отдельные слова (после первого) и соединяем слова вместе. Например: thisIsAVariable, thisIsAMethodO, ThisIsAClass и THISISACONSTANT.

Также обратите внимание, что мы различаем статические и нестатические методы, когда ссылаемся на них. В отличие от некоторых книг мы никогда не пишем Foo.bar(), чтобы подразумевать метод bat () объекта Foo, если Ьаг() не является статическим методом (распараллеливая синтаксис Java в этом случае).

Оглавление книги

Оглавление.

Предисловие 17
Кому следует читать эту книгу 18
Новые разработки 18
Новое в этом издании 9
Использование этой книги 20
Веб-ресурсы 22
Примеры к книге 22
Условные обозначения, использованные в этой книге 22
Использование примеров кода 23
Благодарности 24

Глава 1. Современный язык 25
Появление Java 26
Происхождение Дауа 26
Становление 28
Виртуальная машина 29
Java в сравнении с другими языками 33
Безопасное проектирование 37
Упрощение, упрощение, упрощение 38
Безопасность типов и связывание методов 39
Инкрементная разработка 41
Управление динамической памятью 41
Обработка ошибок 43
Потоки 43
Масштабируемость 44
Безопасность реализации 45
Верификатор 47
Загрузчики классов 48
Диспетчеры безопасности 49
Приложение и безопасность на уровне пользователя 50
История и перспективы развития Java 51
Прошлое: Java 1.0 — Java 1.6 52
Java 7 53
Настоящее: Java 8 56
Будущее 74
Доступность 74

Глава 2. Первое применение 75
Инструменты и среда Java 75
Конфигурация Eclipse и создание проекта 77
Импорт примеров по изучению Java 78
HelloJava 79
Классы 82
Метод main () 83
Классы и объекты 85
Переменные и типы классов 86
HelloConponent 87
Наследование 88
Класс JCoinponent 89
Связи и Поиск виновных 90
Пакеты и инструкции импорта 91
Метод paintComponent() 93
HelloJava2: продолжение 95
Переменные экземпляра 96
Конструкторы 97
События 99
Метод repaint() 102
Интерфейсы 103
HelloJava3: атака класса JButton! 104
Перегрузка метода 107
Компоненты 107
Контейнеры 108
Диспетчеры компоновки 109
Подклассы и подтипы 110
Больше событии и интерфейсов 110
Замечание относительно цвета 112
Статические члены 112
Массивы 113
Методы для класса Color Л 114
Hello Java4: месть Netscape 116
Потоки выполнения 118
Класс Thread 119
Интерфейс Runnable 120
Запуск потока 120
Выполнение кода в классе Thread 121
Исключения 122
Синхронизация 124

Глава 3. Инструменты для работы 126
СредаJDK 126
Виртуальная маши на Java 127
Запуск приложения Java 128
Свойства системы 129
Переменная среды Classpath 130
Утилита javap 132
Компилятор Java 133
Файлы JAR 135
Сжатие файлов 135
Утилита jar 136
Утилита pack2 00 140
Файлы политики 141
Стандартный диспетчер безопасности 141
Утилита policytool .142
Использование файла политики со стандартным диспетчером безопасности 144

Глава 4. Язык Java 145
Кодировка текста 145
Комментарии 147
Комментарии Javadoc 147
Типы 149
Простые типы 150
Ссылочные типы 155
Слово о строках 158
Операторы и выражения 158
Операторы 159
Выражения 168
Исключения 173
Исключения и классы ошибок 174
Обработка исключений 177
Восхождение исключений 179
Трассировка стека 180
Проверяемые и непроверяемые исключения 181
Выброс исключений 183
Разумное использование оператора try 187
Оператор finally 188
Оператор try с очисткой ресурсов 189
Проблемы, связанные с производительностью 191
Утверждения 192
Включение и выключение утверждений 193
Использование утверждений 194
Массивы 196
Типы массивов 197
Создание и инициализация массива 198
Использование массивов 200
Анонимные массивы 202
Многомерные массивы 203
Внутри массивов 205

Глава 5. Объекты в Java 206
Классы 207
Доступ к полям и методам 209
Статические члены 211
МеТОДЫ 215
Локальные переменные 216
Сокрытие 216
Статические методы 218
Инициализация локальных переменных 219
Передача аргументов и ссылки 220
Обертки для простых типов 222
Автоматическое упаковывание и распаковывание простых типов 224
Список аргументов переменной длины 226
Перегрузка метода 227
Создание объектов 229
Конструкторы 230
Работа с перегруженными конструкторами 231
Статические и нестатические блоки инициализаторов 233
Разрушение объектов 235
Сборка мусора 235
Завершение 236
Слабые и мягкие ссылки 237
Перечисления 239
Значения класса Enum 240
Изменение перечислений 241

Глава 6. Отношения между классами 243
Создание подклассов и наследование 243
Перекрытие переменных 246
Переопределение методов 248
Специальные ссылки: this и super 256
Приведение типов 257
Использование конструкторов падклассов 260
Полное разоблачение: конструкторы и инициализация 261
Абстрактные методы и классы 262
Интерфейсы 263
Интерфейсы и обратные вызовы 266
Переменные интерфейса 267
Субинтерфейсы 269
Пакеты и блоки компиляции 270
Блоки компиляции 270
Имена пакетов 271
Видимость класса 272
Импорт классов 272
Видимость переменных и методов 275
Базовые модификаторы доступа 275
Подклассы и видимость 277
Интерфейсы и видимость 278
Массивы и иерархия классов 278
Исключение ArrayStoreException 280
Внутренние классы 280
Внутренние классы и адаптеры 283
Внутренние классы внутри методов 285

Глава 7. Работа с объектами и классами 294
Класс Object 294
Равенство и эквивалентность 295
Хеш-коды 296
Клонирование объектов 297
Класс Class 301
Отражение 304
Модификаторы и безопасность 307
Доступ к полям 308
Доступ к методам 310
Доступ к конструкторам 312
Что насчет массивов? 313
Доступ к информации обобщенного типа 313
Доступ к данным аннотаций 14
Адаптеры с динамическим интерфейсом 315
Для чего подходит отражение? 317
Аннотации 318
Использование аннотаций 319
Стандартные аннотации 321
Инструмент apt 321
Глава 8. Обобщения 323
Контейнеры: новый уровень абстракций 324
Можно ли исправить контейнеры? 325
Ввод обобщений 326
Разговор о типах 330
«Ложки не существует» 330
Стирание 331
Необработанные типы 333
Отношения параметризированных типов 335
Почему List<Date> не является List<Object>? 337
Приведение типов 338
Написание обобщенных классов 340
Переменная типа 340
Наследование обобщений 341
Исключения и обобщения 342
Ограничения, связанные с типом параметра 343
Границы 346
Стирание и границы (работа со старым кодом) 347
Групповые символы 348
Супертип для всех реализаций 349
Ограниченные групповые типы 349
Групповые тины в контексте контейнеров 350
Нижние границы 351
Чтение, запись и арифметические операции 352
<?>, <0b ject> и необработанный тип 354
Отношения группового типа 355
Обобщенные методы 357
Знакомство с обобщенными методами 358
Выведение типа из аргументов 359
Выведение типа из контекста назначений 360
Явный вызов типа 361
Перехват группового типа 361
Выбор между групповыми типами и обобщенными методами 362
Массивы параметризованных типов 363
Использование типов массивов 364
Чем хороши массивы обобщенных типов? 365
Групповые типы в типах массивов 365
Пример: класс Enum 366
Пример: метод sort() 368
Заключение 369

Глава 9. Потоки выполнения 370
Введение в потоки . 371
Класс Thread Class и интерфейс Runnable 372
Управление потоками 377
Смерть потока 380
Выполнение апплета в нескольких потоках 382
Отслеживание проблем 384
Синхронизация 385
Синхронизированный доступ к методам 386
Класс доступа и переменные экземпляров объекта из потоков многопоточных программ 389
Методы wait() м notify () 390
Передача сообщений 393
Объекты ThreadLocal 398
Планирован не и приоритеты 399
Состояние потока 401
Временные интервалы 402
Приоритеты 403
Возвращение 404
Группы потоков 405
Работа с классом ThreadGroup 406
Непроверяемые исключения 406
Выполнение потока 407
Издержки синхронизации 407
Потребление ресурсов потоком 408
Средства для поддержки параллелизма 409
Исполнители 411
Блокировки 427
Средства синхронизации 430
Атомарные операции 436
Заключение 439

Глава 10. Работа с текстом 440
API, связанные с текстом 441
Строки 441
Создание строк 442
Создание строк на основе различных типов 444
Сравнение строк 445
Поиск 447
Редактирование 448
Краткое описание методов объекта String 449
Объекты StringBuilder и StringBuffer 450
Интернационализация 452
Класс java.util.Locale 452
Наборы ресурсов 453
Разбор и форматирование текста 456
Разбор простых чисел 457
Разметка текста 459
Форматирование Printf-Style 461
Программа форматирования 462
Строка форматирования 462
Преобразования строк 464
Простые и числовые преобразования 466
Флаги 468
Прочие положения 469
Форматирование при помощи пакета java text 469
Средство MessageFormat 472
Регулярные выражения j 474
Язык регулярных выражений 475
java.utiljegex API 488

Глава 11. Основные инструменты 496
Математические инструменты 496
Класс java.lang.Math 497
Большие/точные числа 499
Компоненты числа с плавающей запятой 500
Случайные числа 501
Дата и время 502
Работа с календарями 503
Часовые пояса 505
Разбор и форматирование даты при помощи класса DateFormat 508
Форматирование даты и времени в стиле метода printf 510
Таймеры 512
Коллекции 514
Интерфейс Collection 515
Итератор 519
Виды коллекций 520
Интерфейс Map 524
Реализации коллекций 527
Хеш-коды и ключи 533
Синхронизированные и несинхронизированные коллекции 535
Коллекции, предназначенные только/преимущественно для чтения 538
Класс WeakHashMap 538
Классы EnumSet и EnumМар 539
Сортировка коллекций 539
Захватывающий пример 540
Класс Properties 542
Загрузка и сохранение 543
Системные свойства 545
Технология Preferences API 546
Применение технологии Preferences API для классов 547
Хранилище конфигурационных данных 548
Уведомления об изменениях 549
API-интерфейсы для ведения журнала сообщений 550
Обзор 551
Уровни журнальных сообщений 554
Простой пример 555
Изменение свойств журнала 556
Класс Logger 558
Производительность 559
Интерфейс Observer и класс Observable 560

Глава 12. Средства ввода/вывода 563
Потоки ввода/вывода 563
Основы ввода/вывода 567
Потоки символов 570
Обертки для потоков 572
Конвейеры 577
Чтение и запись потоков строк 579
Реализация фильтрующего потока 581
Файловый ввод/вывод 583
Класс java.io.File 583
Файловые потоки 590
Класс RandomAccessFile 594
Пути к ресурсам 595
API-интерфейс пакета NT О для работы с файлами 598
Классы FileSystemи Path 599
Файловые операции, предоставляемые пакетом NIO 601
Операции с директориями. 605
Отслеживание путей 608
Сериализация 609
Инициализация объектов с помощью метода readObject () 611
Идентификатор serialVersionUID 613
Сжатие данных 614
Архивы и сжатие данных 614
Распаковка данных 617
ZIP-архив в качестве файловой системы 619
Пакет NIO 621
Асинхронный ввод/вывод 621
Производительность 622
Блокирование файлов и отображение их в память 622
Каналы 622
Буферы 623
Кодирование и декодирование символов 628
Класс FileChannel 631
Масштабируемый ввод/вывод и пакет NIO 639

Глава 13. Сетевое программирование 641
Сокеты 643
Клиенты и серверы 645
Клиентское приложение DateAtHost 651
Серверное приложение TinyHttpd 653
Свойства сокетов 659
Прокси и брандмауэры 661
Датаграммные сокеты 664
Апплет HeartBeat 665
Класс InetAddress 670
Простой протокол для передачи сериализованных объектов 671
Простой сервер для обмена объектами 672
Удаленный вызов методов 677
Реальное применение 678
Удаленные и локальные объекты 678
Пример использования технологии RM1 683
RM1 и CORBA 693
Масштабируемый ввод/вывод на основе пакета NIO 693
Выборочные каналы 695
Использование селекторов 696
Приложение LargerHttpd 698
Неблокирующие операции на клиентской стороне 704

Глава 14. Веб-программирование 705
Единый указатель ресурсов (URL) 705
Класс URL 706
Потоковая передача данных 708
Получение данных в виде объекта 709
Управление соединениями 710
Использование обработчиков в реальных задачах 711
Технологии обработки данных, на которые стоит обратить внимание 712
Взаимодействие с веб-приложениями 713
Использование запросов типа GET 714
Использование запросов типа POST 715
Класс HttpURLConnection 719
Технология SSL и безопасность при взаимодействии с веб-приложениями 719
Идентификаторы URL, URN и URI 720
Веб-сервисы 721
Технология XML-RPC 722
HsbneWSDL 722
Инструменты для работы с веб-сервисами 723
Клиент для метеослужбы 723

Глава 15. Веб-приложения и веб-сервисы 726
Технологии, лежащие в основе веб-приложений 727
Многостраничные и одностраничные приложения 728
JSP-сценарии 729
XMLhXSL 730
Фреймворки для создания веб-приложений 730
Google Web Toolkit 731
HTML5, AJAX и т. д 731
Веб-приложения на платформе Java 732
Жизненный цикл сервлета 733
Сервлеты 734
Сервлет HelloClient 735
Ответ сервлета 738
Параметры сервлета 739
Сервлет ShowParameters 741
Управление пользовательскими сессиями 743
Сервлет ShowSession 744
Сервлет ShoppingCart 747
Файлы cookie 750
Интерфейс ServletContext 752
Асинхронные сервлеты 753
WAR-файлы и развертывание веб-приложений 757
Конфигурирование с помощью файла web.xml и аннотаций 759
Привязка к URL-шаблонам 762
Развертывание сервлета HelloClient 763
Вывод ошибок и индексные страницы 765
Безопасность и аутентификация 767
Защита ресурсов с помощью ролей безопасности 768
Защищенная передача данных 769
Аутентификация пользователей 771
Авторизация в императивном стиле 773
Фильтры сервлетов 774
Простой фильтр 775
Тестовый сервлет 777
Объявление и привязка фильтров 778
Фильтрация запроса к сервлету 779
Фильтрация ответа, который возвращается сервлетом 781
Создание WAR-файлов с помощью утилиты Ant 785
Иерархия директорий, ориентированная на разработку 786
Развертывание WAR-архивов с помощью утилиты Ant 788
Реализация веб-сервисов 788
Объявление сервиса 789
Наш веб-сервис Echo 790
Использование сервиса 791
Типы данных 793
Итог 795

Глава 16. Библиотека Swing 796
Компоненты 800
Системные компоненты и внешний вид 802
Архитектура MVC в пользовательских интерфейсах 804
Рисование 805
Включение и отключение компонентов 807
Фокусируемся 807
Другие методы класса JComponent 808
Диспетчеры компоновки 810
Вставки 811
Порядок наложения компонентов 811
Методы revalidate() и doLayout() 812
Управление компонентами 813
Прослушивание компонентов 813
JFrame и J Window 813
Другие методы для управления окнами 816
Панели 816
Интеграция с настольной средой 817
События 820
Получатели событий и интерфейс EventListener 821
Источники событий 823
Доставка событий 825
Типы событий 826
Класс java.awt.event.InputEvent 827
Модификаторы, связанные с мышью и клавиатурой 827
События, связанные с выделением компонентов 829
Список часто используемых событий 831
Классы адаптеров 833
Шаблонные адаптеры 836
Настоящий робот в библиотеке AWT 838
Многопоточность в библиотеке Swing 839

Глава 17. Использование компонентов библиотеки Swing 843
Кнопки и метки 843
Разметка текста в кнопках и метках с помощью формата HTML 846
Флажки и переключатели 847
Обычные и раскрывающиеся списки 851
Поле ввода со счетчиком 854
Обрамление 857
Меню f 861
Контекстные меню 865
Управление контекстным меню на уровне отдельных компонентов 868
Класс JScrollPane 870
Класс JSplitPane 872
Класс JTabbedPane 873
Полосы прокрутки и ползунковые регуляторы 78
Диалоговые окна 880
Диалоговое окно выбора файлов 884
Диалоговое окно выбора цвета 887

Глава 18. Другие компоненты библиотеки Swing 888
Компоненты для работы с текстом 888
Приложение TextEntryBox 889
Форматированный текст? 892
Фильтрация ввода 893
Проверка данных 895
Сезам, откройся 897
Использование общей модели данных 898
Встроенная поддержка форматов HTML и RTF 900
Работа с текстом вручную 904
Навигация посредством выделения компонентов 906
Древовидные списки 908
Узлы и модели 909
Стандартное поведение древовидного списка 910
События в древовидном списке 910
Готовый пример 911
Таблицы 914
Раунд первый: сразу в бой 914
Раунд второй: создание модели данных 917
Раунд третий: простая электронная таблица 920
Сортировка и фильтрация 924
Печать таблиц 927
Рабочие столы 928
Изменение внешнего вида 929
Создание нестандартных компонентов 933
Генерирование событий 933
Круговой регулятор 934
Отделение модели данных от представления 938

Глава 19. Диспетчеры компоновки 940
FlowLayoot 942
GridLayout 944
BorderLayout 945
BoxLayout 948
CardLayout 950
GridBagLayout 952
Класс GridBagConstraints 953
Координаты сетки 955
Параметр fill 957
Заполнение нескольких строк или столбцов 958
Параметры weightx и weightyе 960
Параметр anchor 963
Внутренние и внешние отступы 963
Относительное позиционирование 965
Совместное использование разных диспетчеров компоновки 966
Другие диспетчеры компоновки 971
Абсолютное позиционирование 972

Глава 20. Рисование с использованием 2D API 973
Общая картина 973
Конвейер визуализации 976
Краткий тур no Java 2D 979
Заполнение форм 979
Рисование контура формы 979
Удобные методы 980
Рисование текста 981
Рисование изображений 981
Пример целиком 983
Закрашивание форм 986
Сплошные цвета 986
Цветовой градиент 987
Текстуры 987
Системная палитра 988
Штрихование контуров формы 989
Использование шрифтов 989
Метрики шрифта 991
Вывод изображений 996
Класс Image 997
Обозреватели изображений 998
Размер и масштабирование 1001
Техники рисования 1002
Двойная буферизация 1005
Ограниченное рисование с отсечением 1006
Внеэкранное рисование 1009
Печать 1012

Глава 21. Работа с изображениями и другими медиаданными 1015
Загрузка изображений 1016
Интерфейс ImageObserver 1016
КлассMediaTracker 1019
Класс Imagelcon 1022
Класс ImagelO 1023
Создание растровых данных 1024
Создание анимации 1025
Анатомия класса Bufferedlmage 1028
Цветовые модели 1031
Создание изображения. 1032
Обновление Buff eredlmage 1034
Настройка обрабатываемых изображений 1038
Как работает приложение ImageProcessor 1041
Преобразование объекта Image в объект Bufferedlmage 1042
Использование класса RescaleOp 1042
Использование класса AffineTransformOp 1043
Сохранение обрабатываемого изображения 1044
Работа со звуком 1045
Java Media Framework 1047

Глава 22. JavaBeans 1050
Что такое bean-компонент? 1050
Состав bean-компонента 1052
NetBeans IDE 1053
Установка и запуск NetBeans 1054
Свойства и настройки 1057
Подключения и адаптеры событий 1060
Добавление таймера в приложение Juggler 1061
Движение молекул 1063
Связывание свойств 1065
Принудительные свойства 1067
Создание bean-компонентов 1067
Bean-компонент Dial 1068
Разработка шаблонов для свойств 1071
Ограничения визуальной разработки 1072
Создание сериализованой версии кода 1073
Использование класса Beanlnfo 1074
Получение информации о свойствах 1075
Получение информации о событиях 1076
Добавление значков 1077
Создание настройщиков и редакторов свойств 1078
Программирование вручную с применением bean-компонентов 1079
Установка bean-компонентов и управление типами 1079
Работа с сериализованными bean-комнонентами 1080
Отслеживание событий выполнения с применением рефлексии 1083
BeanContext и BeanContextServices 1085
Java Activation Framework 1086
Технология JavaBeans и фреймворки промышленного уровня,
основанные на обычных объектах 1086

Глава 23. Апплеты 1088
Политика браузерных приложений 1089
Поддержка апплетов и Java-плагины 1090
Класс JApplet 1091
Жизненный цикл апплета 1092
«Песочница» безопасности для апплетов 1096
Обзор ресурсов апплетов 1098
Элемент applet 1103
Атрибуты 1103
Параметры 1104
^НаЫа Applet? 1105
Полная версия тега <applet> 1105
Загрузка файлов классов 1107
Пакеты 1108
appletviewer 1109
Java Web Start 1109
Заключение 1110

Глава 24. XML1111
Обзор 1111
Немного предыстории 1112
Сравнение текстовых и двоичных данных 1113
Универсальный синтаксический анализатор 1114
Положение языка ХМ L 1114
XML API 1115
XML и веб-браузеры 1115
Основы XML 1115
Атрибуты 1116
XML-документы 1117
Кодировка 1117
Пространство имен 1118
Проверка 1120
HTMLbXHTML 1120
SAX 1121
SAX API 1121
Создание модели с использованием SAX 1123
XMLEncoder/Decoder 1131
DOM 1132
DOM API 1132
Тест-драйв DOM 1134
Создание XML с DOM 1135
JDOM 1136
XPath 1138
Узлы 1138
Предикаты 1139
Функции 1140
XPath API 1141
XMLGrep 1142
XInclude 1144
Подключение XInclude 1145
Проверка документов 1146
Использование средств проверки документов 1146
Элементы языка DTD 1147
XML Schema 1149
Верификация API 1154
Связывание и генерация кода JAXB 1157
Описание нашей модели 1157
Создание модели Java из ХМL Schema 1164
Создание ХМL-схемы из Java-модели 1164
Преобразование документов с использованием XSL/XSLT 1165
Основы XSL 1166
Преобразование каталога 1168
Преобразование XLS 1170
XLS в браузере 1172
Веб-сервисы 1172
Пара слов в заключение 1173
Приложение А. Среда разработки Eclipse 1174
Войны IDE 1175
Знакомство с Eclipse 1175
Импорт учебных примеров Java 1176
Использование Eclipse 1177
Создание исходников 1178
Интерфейс 1179
Запуск примеров 1180
Сборка примеров в Ant-Based 1181
Отдельные примеры 1182
Функции Eclipse 1182
Создание ярлыков 1182
Автоматическая коррекция 1183
Реорганизация кода 1184
Сравнение файлов 1185
Организация импорта 1185
Форматирование исходного кода 1185
Заключение 1186
Приложение Б. BeanShell: Написание сценариев Java 1187
Запуск BeanShell 1187
Операторы и выражения Java 1188
Импорт 1189
Команды BeanShell 1190
Сценарии методов и объектов 1191
Сценарии интерфейсов и адаптеров 1192
Изменение директории classpath 1193
Дополнительные сведения 1194
Глоссарий 1195
Об авторах 1210
Предметный указатель 1211

Скачать техническую литературу бесплатно86,5 мб. pdf

 

Программирование на Java. Видео

Похожая литература