ВВЕДЕНИЕ | 3 |
|
ЧАСТЬ I. РАБОЧЕЕ МЕСТО JAVA-ПРОГРАММИСТА | 11 |
|
ГЛАВА 1. ПОДГОТОВКА КОМПЬЮТЕРА. ИНСТАЛЛЯЦИЯ ОПЕРАЦИОННЫХ СИСТЕМ. |
НЕОБХОДИМЫЙ ПРОГРАММНЫЙ ИНСТРУМЕНТАРИЙ | 11 |
|
1.1. Разбивка жёсткого диска | 11 |
1.2. Инсталляция двух или более операционных систем |
на одном компьютере. Windows + Linux | 14 |
1.3. Особенности инсталляции Linux | 75 |
1.4. Корректировка файла boot.ini в Windows | 21 |
|
ЧАСТЬ II. НАСТРОЙКИ И УСТАНОВКИ. ОПИСАНИЕ JDK | 23 |
|
ГЛАВА 2. ПРИОБРЕТЕНИЕ И ИНСТАЛЛЯЦИЯ НЕОБХОДИМЫХ |
ИНСТРУМЕНТАЛЬНЫХ СРЕДСТВ JAVA | 23 |
|
2.1. Установка комплекта разработчика Java |
(JDK — Java Development Kit) для Linux | 23 |
2.1.1. Откуда взять JDK для Linux? | 23 |
2.1.2. Инсталляция JDK в Linux | 23 |
2.1.3. Установка JDK в Linux | 23 |
2.1.4. Инсталляция и установка JAVA BEANS в Linux (необязательно) | 24 |
2.1.5. Инсталляция JSDK (необязательно) | 25 |
2.2. Установка необходимого комплекта Java в Windows | 26 |
2.3. Структура каталогов проинсталлированного JDK1.X | 29 |
2.3.1. Файлы и каталоги | 29 |
2.3.2. Дополнительные файлы и каталоги | 30 |
|
ГЛАВА 3. ОПИСАНИЕ ГЛАВНЫХ ПРОГРАММ JDK | 31 |
|
3.1. appletviewer — запуск апплетов Java | 31 |
3.2. Способы запуска апплетов из HTML-файлов | 34 |
3.3. jar — программа создания архивов Java | 35 |
3.4. Java — интерпретатор Java | 36 |
3.5. javac — компилятор Java | 39 |
3.6. javadoc — программа автоматической генерации документации | 40 |
3.7. javah — генератор С-файлов | 42 |
3.8. javakey — программа обслуживания базы данных секретных ключей |
и сертификатов | 43 |
3.9. javap — дизассемблер классов Java | 46 |
3.10. jdb — отладчик Java | 47 |
3.11. native2ascii — преобразование исходных текстов Java в ASCII-текст | 50 |
3.12. serialver — генератор номера версии класса | 52 |
|
ГЛАВА 4. ПОДПИСАННЫЕ АППЛЕТЫ В JAVA 2 | 52 |
|
4.1. Средства обеспечения безопасности в новых версиях JDK1.3 — JDK1.5 |
(keytool, jarsigner, policytool) | 53 |
4.2. Утилита keytool | 54 |
4.3. Хранилище ключей и сертификатов keystore | 54 |
4.4. Подробнее о keytool | 56 |
4.5. Подписываем jar-файл. Утилита jarsigner | 60 |
|
ГЛАВА 5. УСТАНОВКА КОМПЛЕКТА РАЗРАБОТЧИКА J2EE (JAVA 2 ENTERPRISE EDITION) | 61 |
|
5.1. Краткая инструкция по установке | 61 |
5.2. Основные программы J2EE | 62 |
5.2.1. J2EE Administration Tool | 62 |
5.2.2. Cleanup Tool | 63 |
5.2.3. Cloudscape Server | 63 |
5.2.4. Конфигурация Cloudscape-сервера | 65 |
5.2.5. Средства развёртывания J2EE-приложений (Deployment Tool) | 65 |
5.2.6. J2EE Server | 66 |
5.2.7. Key Tool | 66 |
5.2.8. Packager Tool | 66 |
5.2.9. EJB JAR-файл | 66 |
5.2.10. Web Application WAR-файл | 67 |
5.2.11. Application Client JAR-файл | 67 |
5.2.12. J2EE Application EAR-файл | 67 |
5.2.13. Определение Runtime-дескриптора | 68 |
5.2.14. Resource Adapter RAR-файл | 68 |
5.2.15. Realm Tool | 69 |
5.2.16. runclient Script | 70 |
5.2.17. Доступ к удалённому J2EE-cepвepy | 70 |
5.2.18. Запрещение возобновляющейся подсказки для ввода |
пользовательского имени и пароля | 71 |
5.2.19. Средства верификации | 71 |
5.2.20. Командная строка для Verifier | 71 |
5.2.21. Стандартная GUI-версия верификатора | 71 |
|
ГЛАВА 6. КОНКРЕТНЫЙ ПРИМЕР. СОЗДАНИЕ РЕАЛЬНОГО J2EE-ПРИЛОЖЕНИЯ | 72 |
|
6.1. Создание корпоративного компонента (enterprise bean) | 73 |
6.1.1. Кодирование корпоративного компонента | 73 |
6.1.2. Компилирование файлов с исходными кодами | 74 |
6.1.3. Пакетирование корпоративного компонента | 75 |
6.2. Создание клиентского J2EE-приложения | 76 |
6.2.1. Кодирование клиентского J2EE-приложения | 76 |
6.2.2. Компиляция клиентского приложения | 78 |
6.2.3. Пакетирование клиентского J2EE-приложения | 78 |
6.2.4. Установка ссылки корпоративного компонента клиентского приложения | 79 |
6.3. Создание Web-клиента | 79 |
6.3.1. Кодирование Web-клиента | 79 |
6.3.2. Компиляция Web-клиента | 80 |
6.3.3. Пакетирование Web-клиента | 81 |
6 3.4. Установка ссылки корпоративного компонента Web-клиента | 81 |
6.4. Установка имён JNDI | 82 |
6.5. Размещение J2ЕЕ-приложения | 83 |
6.6. Запуск клиента J2ЕЕ-приложения | 83 |
6.7. Запуск Web-клиента | 84 |
6.8. Модификация J2ЕЕ-приложения | 84 |
6.8.1. Модификация файла класса | 84 |
6.8.2. Добавление файла | 85 |
6.8.3. Модификация Web-клиента | 85 |
6.8.4. Модификация установок размещения | 85 |
|
ЧАСТЬ III. СРЕДА РАЗРАБОТКИ | 86 |
|
ГЛАВА 7. ЛУЧШИЕ В МИРЕ РАЗРАБАТЫВАЮЩИЕ СРЕДЫ ДЛЯ JAVA | 86 |
|
7.1. Borland Jbuilder | 86 |
7.2. Sun Forte4J | 92 |
7.3. IBM Visual Age for Java Version 4 | 94 |
7.3.1. Пример создания апплета без программирования в среде IBM Vusual Age | 94 |
|
ЧАСТЬ IV. ИНТЕРНАЛИЗАЦИЯ JAVA | 108 |
|
ГЛАВА 8. КИРИЛЛИЗАЦИЯ. МНОГОЯЗЫКОВАЯ ПОДДЕРЖКА. НАСТРОЙКА ДЛЯ ИНТЕРНЕТА | 108 |
|
8.1. Настройка клавиатуры | 108 |
8.2. Настройка шрифтов | 109 |
8.2.1. Настройка FONT.PROPERTIES в Linux | 110 |
8.2.2 Файл fonts.dir и секция фонтов в X86-Config | 116 |
8.3. Настройка FONT.PROPERTIES в Windows | 123 |
|
ЧАСТЬ V. НАСТРОЙКА WEB-СЕРВЕРА И СЕРВЕРА ПРИЛОЖЕНИЙ | 124 |
|
ГЛАВА 9. СЕРВЕРЫ-ПРИЛОЖЕНИЙ НА БАЗЕ JAVA И APACHE | 125 |
|
9.1. Настройка и конфигурирование Tomcat | 126 |
9.2. Как компилировать и куда помещать новые Java-программы, |
JSP-страницы и HTML-файлы в TOMCAT-директориях? | 729 |
9.3. Использование Tomcat для отладки сервлетов и JSP | 130 |
9.3.1. Настройка Jbuilder для работы с Tomcat с использованием |
произвольного JDBC-драйвера для доступа к базам данных | 131 |
9.3 2. Последовательность действий по установке TOMCAT |
из Visual Age for Java | 134 |
9.4. Дополнительные возможности интеграции Tomcat + Apache | 150 |
9.4.1. Настройка Tomcat для работы с Apache | 150 |
9.4.2. Конфигурирование Tomcat для работы в составе Apache | 150 |
9.4.3. Конфигурирование Apache с использованием mod_jk | 151 |
|
ГЛАВА 10. ИСПОЛЬЗОВАНИЕ WEBSPHERE | 157 |
|
10.1. Краткое описание архитектуры J2EE | 157 |
10.2. Развёртывание приложения в WebSphere | 158 |
10.3. Включение дополнительных компонентов и аутентификация в WebSphere | 164 |
10.4. Консольный способ инсталляции и развёртывания приложений в WebSphere | 168 |
|
ГЛАВА 11. ИСПОЛЬЗОВАНИЕ DOMINO | 169 |
|
11.1. Использование апплетов в Domino | 169 |
11.2. Использование сервлетов в Domino | 173 |
11.3. Использование JSP в Lotus Domino 5.x | 176 |
|
ЧАСТЬ VI. JAVA И СУБД | 178 |
|
ГЛАВА 12. МЕТОДЫ ДОСТУПА К БАЗАМ ДАННЫХ. ВЫБОР И НАСТРОЙКА СУБД | 178 |
|
12.1. Эволюция доступа к базам данных | 178 |
12.2. ODBC Driver Manager | 178 |
12.3. Различные стандарты ODBC | 179 |
12.4. ODBC-решения | 179 |
12.5. Стандарт JDBC | 180 |
12.5.1. Java-программы и апплеты с интерфейсом JDBC-ODBC | 180 |
12.6. Примеры реализации JDBC-драйвера для MS SQL Server | 183 |
12.6.1. JDBC-драйвер для MS SQL Server 2000 фирмы Microsoft | 183 |
12.6.2. Примеры работы с JDBC-драйвером фирмы Microsoft |
для доступа к объектам MS SQL Server 2000 | 183 |
12.6.3. Исходные тексты программ | 184 |
12.7. JDBC-драйвер Oracle | 192 |
12.7.1. Быстрая настройка кириллизации для примеров из Oracle 9i | 194 |
12.7.2. Использование JDBC для доступа к Oracle из WebSphere | 196 |
|
ГЛАВА 13. КАК УСТРОЕН ENTITY BEAN И КАК ОН ОТОБРАЖАЕТСЯ В БАЗЕ ДАННЫХ | 208 |
|
Постоянные поля (Persistent Fields) | 209 |
|
ГЛАВА 14. MYSQL SERVER И JAVA | 230 |
|
14.1. MySQL — первоначальные установки в Linux | 230 |
14.2. Установка и настройка MySQL в Windows | 232 |
14.3. Настройка MySQL | 234 |
14.3.1. Использование JDBC API при работе с MySQL | 236 |
|
ЧАСТЬ VII. АППЛЕТЫ И СЕРВЛЕТЫ | 240 |
|
ГЛАВА 15. ПРОГРАММИРОВАНИЕ АППЛЕТОВ | 240 |
|
15.1. О преимуществах архивных файлов Java | 241 |
15.2. Исполнение апплетов и архивированных программ | 242 |
15.2.1. Виртуальная машина Java | 242 |
15.2.2. Тег <APPLET> | 244 |
15.2.3. Тег <OBJECT> | 245 |
15.3. Шаблон апплета | 247 |
15.4. Шаблон HTML-файла | 248 |
15.5. Передача параметров | 251 |
15.6. Графические возможности апплетов | 251 |
15.6.1. Выбор между HTML- и Web-клиентом: не кроите по одному лекалу | 253 |
15.6.2. Разработка JFC-приложений для Web: апплеты или приложения? | 254 |
15.6.3. Построение интерактивных Web-клиентов и Web-сервисов: перенос |
интерактивности в Web | 254 |
15.7. Порядок создания и выполнения апплета | 255 |
15.8. Примеры полезных апплетов | 256 |
15.8.1. Апплет, осуществляющий выборку данных из базы данных Oracle | 256 |
15.8.2. Использование графики JfreeChart для построения диаграмм |
и графиков в апплетах | 259 |
|
ГЛАВА 16. ПРОГРАММИРОВАНИЕ СЕРВЛЕТОВ | 263 |
|
16.1. Документация по Servlet API | 265 |
16.2. Компиляция сервлетов | 266 |
16.3. Обращение к сервлетам. Вызовы сервлетов | 266 |
16.3.1. Автоматическая активизация сервлетов с HTML-страниц | 266 |
16.4. Заголовки HTTP-запросов | 267 |
16.5. Шаблон сервлета | 269 |
16.5.1. Объекты HttpServletRequest | 270 |
16.5.2. Объекты HttpServletResponse | 271 |
16.5.3. Данные HTTP-заголовка | 271 |
16.6. Взаимодействие сервлетов | 272 |
16.7. Использование сессий и cookies в сервлетах | 273 |
16.7.1. Сессии | 273 |
16.7.2. Cookie's | 275 |
16.8. Динамическая графика в сервлетах | 278 |
16.9. Примеры программирования сервлетов | 279 |
16.9.1. Пример простейшего интерактивного сервлета для доступа |
к базам данных через ODBC | 279 |
16.9.2. Пример сервлета-счётчика посетителей Web-страниц на Web-узле |
с использованием MySQL и Apache | 287 |
|
ГЛАВА 17. СВЯЗЬ АППЛЕТОВ И СЕРВЛЕТОВ | 299 |
|
17.1. Общие принципы взаимодействия компонентов Java через Web | 299 |
17.2. Класс URLConnection | 300 |
17.3. Реализация различных способов взаимодействия | 302 |
17.3.1. Взаимодействие апплета и Web-сервера | 302 |
17.3.2. Взаимодействие апплета и сервлета | 302 |
17.3.3. Взаимодействие апплета и EJB | 304 |
17.4. Защита в апплетах (специальные вставки в программный код) | 307 |
17.5. Апплет в форме распределённого Corba-приложения |
на базе сервера J2EE | 308 |
17.5.1. J2EE Hello World (клиентское приложение в форме апплета) | 308 |
|
ЧАСТЬ VIII. JAVA SERVER PAGE. JSP-СКРИПТЛЕТЫ | 318 |
|
ГЛАВА 18. ОБЩЕЕ ОПИСАНИЕ | 318 |
|
18.1. Что такое JavaServer Pages? | 318 |
18.1.1. Преимущества JSP по сравнению с альтернативными технологиями | 318 |
18.2. Модели доступа к JSP | 319 |
18.3. Что JSP-файлы могут содержать? | 320 |
18.4. Общепринятый JSP-синтаксис (JSP-спецификация) | 321 |
18.5. JSP-API и примеры стандартных JSP-сценариев | 324 |
18.6. Средства для создания JSP-файлов | 326 |
|
ГЛАВА 19. ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ JSP | 327 |
|
19.1. Главная цель изобретения JSP | 327 |
19.2. Использование JavaBeans в JSP | 327 |
19.3. Использование апплетов в JSP (plugin) | 332 |
19.4. Встроенный Java-код (scriptlets) | 336 |
19.4.1. Проблемы перекодировки QUERY_STRING |
и методы получения запросных параметров | 338 |
19.4.2. Синтаксис XML по отношению к скриптлетам | 342 |
19.5. Интернализация и проблемы с кириллицей по отношению к JSP | 342 |
19.6. Обработка HTML-форм | 345 |
19.6.1. Элемент FORM | 348 |
19.6.2. Управляющие элементы в HTML-формах | 349 |
19.7. JSP и HTML-формы | 350 |
19.7.1. Отправка файловых документов на обработку серверу по инициативе |
клиента с использованием HTML-форм, встроенных в JSP на стороне сервера | 350 |
19.7.2. Получение обработанных файловых документов с сервера через |
HTML-форму, встроенную в JSP | 355 |
|
ЧАСТЬ IX. КОМБИНАЦИЯ JAVA И XML | 358 |
|
ГЛАВА 20. КРОСС-ПЛАТФОРМЕННОСТЬ — ЭТО ПЕРЕНОСИМЫЕ ПРОГРАММЫ НА JAVA |
И ПЕРЕНОСИМЫЕ ДАННЫЕ НА XML | 358 |
|
20.1. Краткая суть XML | 360 |
20.2. Многоуровневые приложения на основе Java и XML | 361 |
20.3. Какие бывают парсеры? | 367 |
20.3.1. Краткая суть DOM | 368 |
20.3.2. Краткая суть SAX | 368 |
20.3.3. Когда использовать DOM? | 368 |
20.3.4. Когда использовать SAX? | 369 |
|
ГЛАВА 21. НЕОБХОДИМЫЕ РАСШИРЕНИЯ JAVA-ПЛАТФОРМЫ | 388 |
|
21.1. Обзор различных моделей обработки XML | 390 |
21.2. Примеры XSLT-обработки | 392 |
21.2.1. XSLT-скрипт-генератор | 395 |
21.2.2. Декларации | 395 |
21.2.3. XML-источники | 396 |
21.2.4. Шаблон корневого элемента | 396 |
21.2.5. Шаблоны преобразования | 391 |
21.2.6. Мапирование (отображение) | 397 |
21.3. Поддержка Java XML/XSL-преобразований в Oracle | 401 |
21.4. Стандартные XML-преобразования | 402 |
21.4.1. Преобразование XML в HTML (на стороне клиента) | 402 |
21.4.2. Преобразование XML в HTML (на стороне сервера) | 402 |
21.4.3. Преобразование XML в HTML без использования XSL | 403 |
21.4.4. Преобразование XML в любые форматы (PDF, SVG, WML). |
Проект Cocoon и Apache Forrest | 403 |
21.5. Создание XML-документов | 403 |
21.6. Инсталляция необходимых программных продуктов для эффективной |
поддержки Java и XML | 403 |
21.6.1. Стандартные XML/XSL примеры из дистрибутива |
Oracle XML Developer (XDK) | 406 |
21.6.2. XML-репозиторий в Oracle | 410 |
21.6.3. Готовое Web-приложение с использованием Java и XML | 414 |
21.7. Заключение к части IX | 416 |
|
ЧАСТЬ X. JAVA И WEB-СЕРВИСЫ | 417 |
|
ГЛАВА 22. WEB-СЕРВИСЫ И ПОРТАЛЫ | 417 |
|
22.1. Порталы и портлеты | 420 |
22.2. Система регистрации и обнаружения сервисов, или Что такое UDDI? | 421 |
22.3. Уровень описания сервиса, или Что такое WSDL? | 422 |
22.3.1. Быстрая генерация программного кода на основе WSDL | 424 |
22.3.2. Управление многоуровневыми сервисами при помощи |
организации потоков работ (WorkFlow или WSFL) | 424 |
22.4. Протоколы транспортного уровня, или Как Web-cepвuc пересылает |
данные? | 425 |
22.5. Два основных типа Web-сервисов | 425 |
22.5.1. Первый тип Web-сервисов — сервисы удалённого вызова процедур | 426 |
22.5.2. Второй тип Web-сервисов — сервисы сообщений, или Как можно |
наиболее эффективно использовать SOAP? | 426 |
22.6. XML-RPC как альтернатива SOAP- и Web-сервисам? | 432 |
|
ГЛАВА 23. ПРОГРАММНЫЙ ИНСТРУМЕНТАРИЙ ДЛЯ РАЗРАБОТКИ И ОТЛАДКИ |
WEB-СЕРВИСОВ | 437 |
|
23.1. Инструментарий от IBM | 437 |
23.2. Инструментарий от Sun | 441 |
23.2.1. Java XML Pack | 441 |
23.2.2. Java Web Services Developer Pack | 442 |
|
ГЛАВА 24. ПРОГРАММИРОВАНИЕ WEB-СЕРВИСОВ | 442 |
|
24.1. Описание примера получения биржевых квот (котировок) |
с фондовой биржи Nasdaq (r) | 442 |
24.1.1. Написание Nasdaq(r) Quotes Java-программы | 445 |
24.1.2. Создание WSDL-документа | 450 |
24.1.3. Развёртывание Web-сервисов при помощи Apache Axis | 452 |
24.1.4. Развёртывание (Deploying) WAR-архива сервиса |
при помощи утилиты ETTK Configuration Tool | 453 |
24.1.5. Axis-регистрация сервиса | 454 |
24.1.6. Обнаружение (Discovering) и публикация Web-сервиса | 454 |
24.1.7. Публикация Nasdaq(r) Quotas Web-сервиса при помощи WS-Inspection | 454 |
24.1.8. Публикация Nasdaq(r) Quotes Web-сервиса при помощи UDDI | 455 |
24.1.9. Обнаружение (Discovering) Nasdaq(r) Quotes Web-сервиса |
при помощи WS-Inspection | 457 |
24.1.10. Обнаружение (Discovering) Nasdaq(r) Quotes Web-сервиса |
при помощи UDDI | 458 |
24.1.11. Вызов Nasdaq(r) Quotes Web-сервиса | 458 |
24.1.12. Полный код клиентской программы | 459 |
24.1.13. Выполнение демонстрационного примера Nasdaq(r) |
Quotes Web-сервиса | 461 |
24.2. Пример разработки клиента SOAP для работы с SOAP-сервером |
поискового сервера Google | 461 |
24.3. Пример использования Domino для взаимодействия с Google | 462 |
24.3.1. Построение SOAP-запроса к Google API | 463 |
24.3.2. Создание HTTP Connection к google-серверу | 464 |
24.3.3. Посылка (POSTing) SOAP-запроса к google-серверу | 464 |