
Книги по Java и Eclipse / Java / Java.Промышленное программирование
.pdf

И.Н. Блинов, В.С. Романчик
Java.
ПРОМЫШЛЕННОЕ
ПРОГРАММИРОВАНИЕ
Практическое пособие
Минск «УниверсалПресс»
2007

УДК 004.434 ББК 32.973.26-018.2
Б69
А в т о р ы :
доцент кафедры Численных методов и программирования БГУ, кандидат физико-математических наук И.Н. Блинов,
доцент, зав. кафедрой Численных методов и программирования БГУ, кандидат физико-математических наук В.С. Романчик
Р е ц е н з е н т ы :
доцент, кандидат физико-математических наук И.М. Галкин, доцент, кандидат технических наук А.Е. Люлькин
Блинов, И.Н.
Б69 Java. Промышленное программирование : практ. пособие / И.Н. Блинов, В.С. Романчик. – Минск : УниверсалПресс, 2007. – 704 с.
ISBN 978-985-6699-63-7
Пособие предназначено для программистов, начинающих и продолжающих изучение технологий Java SE 6 и J2EE. В его первой части рассматриваются основы языка Java и концепции объектно-ориентированного программирования. Во второй части изложены важнейшие аспекты применения библиотек классов языка Java, включая файлы, коллекции, сетевые и многопоточные приложения, а также взаимодействие с ХМL. В третьей части приведены основы программирования распределенных информационных систем с применением сервлетов, JSP, баз данных
исобственных тегов разработчика.
Вконце каждой главы даются тестовые вопросы по материалу главы и задания для выполнения. В приложениях приведены дополнительные материалы, относящиеся к использованию HTML, XML, JavaScript, а также краткое описание популярных технологий Struts и Hibernate для разработки распределенных систем, объединяющих возможности J2EE и XML.
УДК 004.434 ББК 32.973.26-018.2
© Блинов И.Н., Романчик В.С., 2007
ISBN 978-985-6699-63-7 |
© Оформление. УП «УниверсалПресс», 2007 |

|
КРАТКОЕ СОДЕРЖАНИЕ |
|
Предисловие ............................................................................................................... |
10 |
|
|
Часть 1. ОСНОВЫ ЯЗЫКА JAVA |
|
Глава 1. ВВЕДЕНИЕ В КЛАССЫ И ОБЪЕКТЫ ................................................. |
11 |
|
Глава 2. ТИПЫ ДАННЫХ И ОПЕРАТОРЫ ........................................................ |
27 |
|
Глава 3. |
КЛАССЫ .................................................................................................. |
50 |
Глава 4. НАСЛЕДОВАНИЕ И ПОЛИМОРФИЗМ .............................................. |
78 |
|
Глава 5. |
ПРОЕКТИРОВАНИЕ КЛАССОВ ......................................................... |
105 |
Глава 6. ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ ...................................... |
139 |
|
|
Часть 2. ИСПОЛЬЗОВАНИЕ КЛАССОВ И БИБЛИОТЕК |
|
Глава 7. |
ОБРАБОТКА СТРОК ............................................................................. |
160 |
Глава 8. ИСКЛЮЧЕНИЯ И ОШИБКИ ............................................................... |
190 |
|
Глава 9. |
ФАЙЛЫ. ПОТОКИ ВВОДА/ВЫВОДА ................................................ |
205 |
Глава 10. |
КОЛЛЕКЦИИ ......................................................................................... |
229 |
Глава 11. |
ГРАФИЧЕСКИЕ ИНТЕРФЕЙСЫ ПОЛЬЗОВАТЕЛЯ ........................ |
259 |
Глава 12. |
СОБЫТИЯ .............................................................................................. |
275 |
Глава 13. |
ЭЛЕМЕНТЫ КОМПОНОВКИ И УПРАВЛЕНИЯ ............................. |
287 |
Глава 14. |
ПОТОКИ ВЫПОЛНЕНИЯ ................................................................... |
328 |
Глава 15. |
СЕТЕВЫЕ ПРОГРАММЫ .................................................................... |
350 |
Глава 16. |
XML & JAVA ......................................................................................... |
364 |
Часть 3. ТЕХНОЛОГИИ РАЗРАБОТКИ WEB-ПРИЛОЖЕНИЙ |
|
|
Глава 17. |
ВВЕДЕНИЕ В СЕРВЛЕТЫ И JSP ........................................................ |
414 |
Глава 18. |
СЕРВЛЕТЫ ............................................................................................ |
426 |
Глава 19. |
JAVA SERVER PAGES ......................................................................... |
446 |
Глава 20. |
JDBC ....................................................................................................... |
479 |
Глава 21. CЕССИИ, СОБЫТИЯ И ФИЛЬТРЫ .................................................... |
504 |
|
Глава 22. |
ПОЛЬЗОВАТЕЛЬСКИЕ ТЕГИ ............................................................. |
523 |
УКАЗАНИЯ И ОТВЕТЫ ....................................................................................... |
536 |
|
Приложение 1. НTML ............................................................................................. |
552 |
|
Приложение 2. JavaScript ........................................................................................ |
574 |
|
Приложение 3. UML ............................................................................................... |
599 |
|
Приложение 4. Базы данных и язык SQL .............................................................. |
608 |
|
Приложение 5. Hibernate ............................................................................................. |
625 |
|
Приложение 6. Struts ............................................................................................... |
645 |
|
Приложение 7. Журнал сообщений (Logger) ........................................................ |
667 |
|
Приложение 8. Apache Ant ..................................................................................... |
676 |
|
Приложение 9. Портлеты ....................................................................................... |
690 |
|
Список рекомендуемой литературы и источников ............................................... |
703 |
|
СОДЕРЖАНИЕ |
|
Предисловие ............................................................................................................... |
10 |
|
|
Часть 1. ОСНОВЫ ЯЗЫКА JAVA |
|
Глава 1. |
ВВЕДЕНИЕ В КЛАССЫ И ОБЪЕКТЫ ............................................. |
11 |
|
Основные понятия ООП ................................................................... |
11 |
|
Язык Java ........................................................................................... |
14 |
|
Нововведения версий 5.0 и 6.0 ........................................................ |
15 |
|
Простое приложение ........................................................................ |
16 |
|
Классы и объекты ............................................................................. |
19 |
|
Сравнение объектов .......................................................................... |
20 |
|
Консоль .............................................................................................. |
21 |
|
Простой апплет ................................................................................. |
23 |
|
Задания к главе 1 ............................................................................... |
24 |
|
Тестовые задания к главе 1 .............................................................. |
25 |
Глава 2. |
ТИПЫ ДАННЫХ И ОПЕРАТОРЫ ..................................................... |
27 |
|
Базовые типы данных и литералы ................................................... |
27 |
|
Документирование кода ................................................................... |
29 |
|
Операторы ......................................................................................... |
31 |
|
Классы-оболочки .............................................................................. |
34 |
|
Операторы управления ..................................................................... |
37 |
|
Массивы ............................................................................................. |
39 |
|
Класс Маth ......................................................................................... |
43 |
|
Управление приложением ................................................................ |
44 |
|
Задания к главе 2 ............................................................................... |
47 |
|
Тестовые задания к главе 2 .............................................................. |
49 |
Глава 3. |
КЛАССЫ .................................................................................................. |
50 |
|
Переменные класса и константы ..................................................... |
50 |
|
Ограничение доступа ........................................................................ |
51 |
|
Конструкторы .................................................................................... |
52 |
|
Методы .............................................................................................. |
54 |
|
Статические методы и поля ............................................................. |
55 |
|
Модификатор final ............................................................................ |
56 |
|
Абстрактные методы ........................................................................ |
57 |
|
Модификатор native .......................................................................... |
57 |
|
Модификатор synchronized .............................................................. |
57 |
|
Логические блоки ............................................................................. |
58 |
|
Перегрузка методов .......................................................................... |
59 |
|
Параметризованные классы ............................................................. |
60 |
|
Параметризованные методы ............................................................ |
65 |
|
Методы с переменным числом параметров .................................... |
65 |
|
Перечисления .................................................................................... |
67 |
|
Аннотации ......................................................................................... |
70 |
|
Задания к главе 3 ............................................................................... |
72 |
|
Тестовые задания к главе 3 .............................................................. |
76 |

Глава 4. НАСЛЕДОВАНИЕ И ПОЛИМОРФИЗМ ........................................... |
78 |
|
|
Наследование .................................................................................... |
78 |
|
Использование final .......................................................................... |
81 |
|
Использование super и this ............................................................... |
82 |
|
Переопределение методов и полиморфизм .................................... |
83 |
|
Методы подставки ............................................................................ |
86 |
|
Полиморфизм и расширяемость ...................................................... |
86 |
|
Статические методы и полиморфизм .............................................. |
88 |
|
Абстракция и абстрактные классы .................................................. |
89 |
|
Класс Object ....................................................................................... |
91 |
|
Клонирование объектов ................................................................... |
95 |
|
“Сборка мусора” и освобождение ресурсов ................................... |
97 |
|
Задания к главе 4 ............................................................................... |
99 |
|
Тестовые задания к главе 4 ............................................................. |
102 |
Глава 5. |
ПРОЕКТИРОВАНИЕ КЛАССОВ ...................................................... |
105 |
|
Шаблоны проектирования GRASP ................................................. |
105 |
|
Шаблон Expert .................................................................................. |
105 |
|
Шаблон Creator ................................................................................ |
107 |
|
Шаблон Low Coupling ..................................................................... |
108 |
|
Шаблон High Cohesion .................................................................... |
111 |
|
Шаблон Controller ............................................................................ |
113 |
|
Шаблоны проектирования GoF ...................................................... |
114 |
|
Порождающие шаблоны ................................................................. |
115 |
|
Шаблон Factory ................................................................................ |
115 |
|
Шаблон AbstractFactory ................................................................... |
117 |
|
Шаблон Builder ................................................................................ |
120 |
|
Шаблон Singleton ............................................................................. |
122 |
|
Структурные шаблоны .................................................................... |
123 |
|
Шаблон Bridge ................................................................................. |
123 |
|
Шаблон Decorator ............................................................................ |
125 |
|
Шаблоны поведения ........................................................................ |
127 |
|
Шаблон Command ............................................................................ |
128 |
|
Шаблон Strategy ............................................................................... |
131 |
|
Шаблон Observer .............................................................................. |
133 |
|
Антишаблоны проектирования ...................................................... |
135 |
|
Задания к главе 5 .............................................................................. |
137 |
|
Тестовые задания к главе 5 ............................................................. |
137 |
Глава 6. |
ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ ................................. |
139 |
|
Интерфейсы ...................................................................................... |
139 |
|
Пакеты .............................................................................................. |
142 |
|
Статический импорт ........................................................................ |
145 |
|
Внутренние классы .......................................................................... |
146 |
|
Внутренние (inner) классы .............................................................. |
147 |
|
Вложенные (nested) классы ............................................................. |
152 |
|
Анонимные (anonymous) классы .................................................... |
153 |
|
Задания к главе 6 .............................................................................. |
156 |
|
Тестовые задания к главе 6 ............................................................. |
158 |
|
Часть 2. ИСПОЛЬЗОВАНИЕ КЛАССОВ И БИБЛИОТЕК |
|
Глава 7. |
ОБРАБОТКА СТРОК ........................................................................... |
160 |
|
Класс String ....................................................................................... |
160 |
|
Классы StringBuilder и StringBuffer ................................................ |
165 |
|
Форматирование строк .................................................................... |
167 |
|
Лексический анализ текста ............................................................. |
173 |
|
Регулярные выражения ................................................................... |
174 |
|
Интернационализация текста ......................................................... |
178 |
|
Интернационализация чисел ........................................................... |
181 |
|
Интернационализация дат ............................................................... |
182 |
|
Задания к главе 7 .............................................................................. |
184 |
|
Тестовые задания к главе 7 ............................................................. |
188 |
Глава 8. |
ИСКЛЮЧЕНИЯ И ОШИБКИ ............................................................ |
190 |
|
Иерархия и способы обработки ...................................................... |
190 |
|
Оператор throw ................................................................................. |
195 |
|
Ключевое слово finally .................................................................... |
197 |
|
Собственные исключения ............................................................... |
198 |
|
Наследование и исключения ........................................................... |
199 |
|
Отладочный механизм assertion ..................................................... |
201 |
|
Задания к главе 8 .............................................................................. |
202 |
|
Тестовые задания к главе 8 ............................................................. |
203 |
Глава 9. |
ФАЙЛЫ. ПОТОКИ ВВОДА/ВЫВОДА ............................................. |
205 |
|
Класс File .......................................................................................... |
205 |
|
Байтовые и символьные потоки ввода/вывода .............................. |
207 |
|
Предопределенные потоки .............................................................. |
212 |
|
Сериализация объектов ................................................................... |
214 |
|
Консоль ............................................................................................. |
218 |
|
Класс Scanner ................................................................................... |
219 |
|
Архивация ........................................................................................ |
222 |
|
Задания к главе 9 .............................................................................. |
226 |
|
Тестовые задания к главе 9 ............................................................. |
227 |
Глава 10. |
КОЛЛЕКЦИИ ...................................................................................... |
229 |
|
Общие определения ......................................................................... |
229 |
|
Списки .............................................................................................. |
231 |
|
Deque ................................................................................................. |
239 |
|
Множества ........................................................................................ |
240 |
|
Карты отображений ......................................................................... |
245 |
|
Унаследованные коллекции ............................................................ |
249 |
|
Класс Collections .............................................................................. |
250 |
|
Класс Arrays ..................................................................................... |
253 |
|
Задания к главе 10 ............................................................................ |
255 |
|
Тестовые задания к главе 10 ........................................................... |
257 |
Глава 11. |
ГРАФИЧЕСКИЕ ИНТЕРФЕЙСЫ ПОЛЬЗОВАТЕЛЯ ................ |
259 |
|
Основы оконной графики ................................................................ |
259 |
|
Апплеты ............................................................................................ |
261 |
|
Фреймы ............................................................................................. |
270 |
|
Задания к главе 11 ............................................................................ |
272 |
|
Тестовые задания к главе 11 ........................................................... |
273 |

Глава 12. |
СОБЫТИЯ ............................................................................................ |
275 |
|
Основные понятия ........................................................................... |
275 |
|
Классы-адаптеры ............................................................................. |
281 |
|
Задания к главе 12 ............................................................................ |
284 |
|
Тестовые задания к главе 12 ........................................................... |
285 |
Глава 13. |
ЭЛЕМЕНТЫ КОМПОНОВКИ И УПРАВЛЕНИЯ ....................... |
287 |
|
Менеджеры размещения ................................................................. |
287 |
|
Элементы управления ..................................................................... |
293 |
|
Визуальные компоненты JavaBeans ............................................... |
318 |
|
Задания к главе 13 ............................................................................ |
325 |
|
Тестовые задания к главе 13 ........................................................... |
326 |
Глава 14. |
ПОТОКИ ВЫПОЛНЕНИЯ ................................................................ |
328 |
|
Класс Thread и интерфейс Runnable ............................................... |
328 |
|
Жизненный цикл потока ................................................................. |
329 |
|
Управление приоритетами и группы потоков ............................... |
330 |
|
Управление потоками ...................................................................... |
331 |
|
Потоки-демоны ................................................................................ |
333 |
|
Потоки в графических приложениях ............................................. |
335 |
|
Методы synchronized ....................................................................... |
337 |
|
Инструкция synchronized ................................................................. |
340 |
|
Состояния потока ............................................................................. |
342 |
|
Потоки в J2SE 5 ................................................................................ |
344 |
|
Задания к главе 14 ............................................................................ |
347 |
|
Тестовые задания к главе 14 ........................................................... |
348 |
Глава 15. |
СЕТЕВЫЕ ПРОГРАММЫ ................................................................ |
350 |
|
Поддержка Интернет ....................................................................... |
350 |
|
Сокетные соединения по протоколу TCP/IP ................................. |
354 |
|
Многопоточность ............................................................................. |
356 |
|
Датаграммы и протокол UDP ......................................................... |
359 |
|
Задания к главе 15 ............................................................................ |
361 |
|
Тестовые задания к главе 15 ........................................................... |
362 |
Глава 16. |
XML & JAVA ........................................................................................ |
364 |
|
DTD ................................................................................................... |
367 |
|
Схема XSD ........................................................................................ |
370 |
|
XML-анализаторы ............................................................................ |
380 |
|
SAX-анализаторы ............................................................................ |
381 |
|
Древовидная модель ........................................................................ |
388 |
|
Xerces ................................................................................................ |
388 |
|
JDOM ................................................................................................ |
392 |
|
StAX .................................................................................................. |
399 |
|
XSL .................................................................................................... |
404 |
|
Элементы таблицы стилей .............................................................. |
407 |
|
Задания к главе 16 ............................................................................ |
408 |
|
Тестовые задания к главе 16 ........................................................... |
412 |
Часть 3. ТЕХНОЛОГИИ РАЗРАБОТКИ WEB-ПРИЛОЖЕНИЙ |
|
|
Глава 17. |
ВВЕДЕНИЕ В СЕРВЛЕТЫ И JSP .................................................... |
414 |
|
Первый сервлет ................................................................................ |
414 |
|
Запуск контейнера сервлетов и размещение проекта ................... |
416 |
|
Первая JSP ........................................................................................ |
419 |
|
Взаимодействие сервлета и JSP ...................................................... |
421 |
|
Задания к главе 17 ............................................................................ |
424 |
|
Тестовые задания к главе 17 ........................................................... |
424 |
Глава 18. |
СЕРВЛЕТЫ .......................................................................................... |
426 |
|
Интерфейс ServletContext ................................................................ |
426 |
|
Интерфейс ServletConfig ................................................................. |
427 |
|
Интерфейсы ServletRequest и HttpServletRequest .......................... |
428 |
|
Интерфейсы ServletResponse и HttpServletResponse ..................... |
432 |
|
Обработка запроса ........................................................................... |
432 |
|
Многопоточность ............................................................................. |
436 |
|
Электронная почта ........................................................................... |
439 |
|
Задания к главе 18 ............................................................................ |
443 |
|
Тестовые задания к главе 18 ........................................................... |
444 |
Глава 19. |
JAVA SERVER PAGES ....................................................................... |
446 |
|
Стандартные элементы action ......................................................... |
447 |
|
JSP-документ .................................................................................... |
449 |
|
JSTL ................................................................................................... |
451 |
|
Неявные объекты ............................................................................. |
453 |
|
JSTL core............................................................................................ |
454 |
|
JSTL fmt ........................................................................................... |
458 |
|
JSTL sql ............................................................................................. |
461 |
|
JSTL xml ........................................................................................... |
461 |
|
Включение ресурсов ........................................................................ |
462 |
|
Обработка ошибок ........................................................................... |
463 |
|
Извлечение значений полей ............................................................ |
465 |
|
Технология взаимодействия JSP и сервлета .................................. |
467 |
|
Задания к главе 19 ............................................................................ |
476 |
|
Тестовые задания к главе 19 ........................................................... |
477 |
Глава 20. |
JDBC ....................................................................................................... |
479 |
|
Драйверы, соединения и запросы ................................................... |
479 |
|
СУБД MySQL ................................................................................... |
481 |
|
Простое соединение и простой запрос ........................................... |
482 |
|
Метаданные ...................................................................................... |
485 |
|
Подготовленные запросы и хранимые процедуры ....................... |
486 |
|
Транзакции ....................................................................................... |
489 |
|
Точки сохранения ............................................................................ |
493 |
|
Пул соединений ............................................................................... |
495 |
|
Задания к главе 20 ............................................................................ |
497 |
|
Тестовые задания к главе 20 ........................................................... |
502 |

Глава 21. CЕССИИ, СОБЫТИЯ И ФИЛЬТРЫ ............................................... |
504 |
Сеанс (сессия) .................................................................................. |
504 |
Cookie ................................................................................................ |
509 |
Обработка событий .......................................................................... |
512 |
Фильтры ............................................................................................ |
516 |
Задания к главе 21 ............................................................................ |
519 |
Тестовые задания к главе 21 ........................................................... |
521 |
Глава 22. ПОЛЬЗОВАТЕЛЬСКИЕ ТЕГИ ........................................................ |
523 |
Простой тег ....................................................................................... |
523 |
Тег с атрибутами .............................................................................. |
526 |
Тег с телом ........................................................................................ |
528 |
Элементы action ............................................................................... |
531 |
Задания к главе 22 ............................................................................ |
533 |
Тестовые задания к главе 22 ........................................................... |
534 |
УКАЗАНИЯ И ОТВЕТЫ ....................................................................................... |
536 |
Приложение 1. HTML ............................................................................................. |
552 |
Приложение 2. JavaScript ........................................................................................ |
574 |
Приложение 3. UML ............................................................................................... |
599 |
Приложение 4. Базы данных и язык SQL .............................................................. |
608 |
Приложение 5. Hibernate ............................................................................................. |
625 |
Приложение 6. Struts ............................................................................................... |
645 |
Приложение 7. Журнал сообщений (Logger) ........................................................ |
667 |
Приложение 8. Apache Ant ..................................................................................... |
676 |
Приложение 9. Портлеты ....................................................................................... |
690 |
Список рекомендуемой литературы и источников ............................................... |
703 |