![Page 1: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/1.jpg)
Инструментарий JDK
Андрей Дмитриев[email protected]://in4mix2006.narod.ru/2008
Copyright (C) 2000 - 2008 Sun Microsystems, Inc. All rights reserved.
![Page 2: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/2.jpg)
Что такое Java?
Язык программирования Среда разработки Платформа Сообщество разработчиков Технологии
![Page 3: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/3.jpg)
Как устроен процесс разработки программы
Исходный код Java
Компилятор Java
Объектный код Java
(байт-код)
JVM
Интепретатор Java
ОС
Объектный код проверяется и загружается в виртуальную машину Java
Программа выполняется
интерпретатором
Интерпретатор взаимодействует с ОС
конкретной машины
![Page 4: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/4.jpg)
Что такое JDK?
Java Development Toolkit Платформа Java как среда разработки
представляет собой инструментарий и набор утилит, позволяющий создавать Java приложения
![Page 5: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/5.jpg)
Программа Стандартные инструменты и утилиты
JDK Экспериментальные инструменты и
утилиты JDK
![Page 6: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/6.jpg)
Базовый инструментарий
javac – компилятор языка Java java – интерпретатор байт-кода javah - создает заголовочные файлы javadoc - формирует стандартную
документацию jar – создание дистрибутивов Java javap – дизассемблер apt – обработчик аннотаций Другие базовые инструменты (appletviewer,
jdb, extcheck)
![Page 7: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/7.jpg)
javac (компилятор языка Java)
Преобразует исходный код в промежуточный байт-код Пример компиляции: javac myClass.java После выполнения данной комманды будет создан файл
myClass.class в той же директории, где расположен файл с искодным кодом, myClass.java
Все параметры компиляции (в том числе расположение обоих файлов) можно конфигурировать при помощи опций
Полученный в результате байт-код не может быть выполнен непосредственно (как .exe файл). Его может выполнить лишь интерпретатор java
![Page 8: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/8.jpg)
Параметры компиляцииПараметры компиляции можно изменять при помощи ключей компилятора javac:
вывести версию компилятора-version
дополнительные опции-X
свойство, передаваемое в JVM. Виртуальная машина может изменять свое поведение в зависимости от переданных параметров.
-Jперечень разрешенных опций компилятора-help
указать версию JVM, для которой создается класс-файл-targetуказать версию исходного кода-source
указанть путь, по которому можно найти классы, необходимые для запуска JVM
-bootclasspath
указать путь, по которому можно найти классы, необходимые для компиляции (переменная CLASSPATH)
-cp –classpath
![Page 9: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/9.jpg)
Расширенные параметры компиляции
Дополнительные проверки для JNI кода.
-Xcheck:jni
Перенаправление вывода программы.-Xstdout
Выводить предупреждения о некорректном коде программы.
-Xlint
Установить максимальное число выводимых ошибок/предупреждений.
-Xmaxerrs/-Xmaxwarns
Заменить классы, необходимые для запуска компилятора.
-Xbootclasspath/a (/p)
![Page 10: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/10.jpg)
java (интерпретатор байт-кода) Запускает среду выполнения Java (Java Runtime
Environment, JRE), загружает указанный класс и вызывает метод main данного класса
Примеры запуска: java myClass.class java –jar myArchive.jar SomeArgument
Можно передавать аргументы приложению и указывать опции запуска в командной строке
![Page 11: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/11.jpg)
Параметры запуска
загрузка отладочного агента-agentlib
расширенные параметры-X
выбор клиентской или серверной модификаций JVM
-client/-server
загрузка Java агента-javaagent
установка системного свойства-D
указание пути, по которому содержатся классы, необходимые для запуска
-cp(-classpath)
Параметры исполнения можно изменять при помощи ключей интерпретатора, передаваемых java:
![Page 12: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/12.jpg)
Расширенные параметры запуска
установка размера стека-Xss
журнализация сборщика мусора-Xloggc
включение инкрементального сборщика мусора
-Xincgc
дополнительные проверки JNI вызовов-Xcheck:jni
установка размера heap области (начальный/максимальный размеры)
-Xms/-Xmx
отключение удаления объектов-Xnoclassgc
замена классов, необходимых для запуска приложения
-Xbootclasspath/a (/p)
![Page 13: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/13.jpg)
javah Генерирует заголовочные файлы и файлы-заглушки на языке С
на основе Java классов Данные файлы позволяют наладить взаимодействие кода на
Java и на С или С++ Название заголовочного файла и структуры, в нем описанной,
основывается на имени Java класса с учетом пакета Технология Java Native Interface (JNI), позволяет общаться с
чужим кодом без заголовочных файлов и заглушек Для отладки следует использовать утилиту javah_g
(неоптимизированную версию javah) javah [ options ] fully-qualified-classname. . . javah_g [ options ] fully-qualified-classname. . .
![Page 14: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/14.jpg)
javadoc Генерирует документацию к программному
интерфейсу приложения Предпосылки:
Для обеспечения поддержки код должен быть хорошо документирован
Найти нужную информацию непосредственно в коде не всегда просто
Нужен инструмент, собирающий разбросанные по коду комментарии и предоставляющий удобную навигацию по ним
От разработчика требуется: придерживаться несложных правил написания
комментариев (чтобы Javadoc правильно их интерпретировал)
запускать утилиту Javadoc для создания и обновления документации
![Page 15: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/15.jpg)
javadoc (продолжение)По умолчанию Javadoc генерирует документацию для:
Пакетов Public классов и интерфейсов Public и protected методов Public и protected полей При необходимости документировать private
классы/методы/поля, можно указать ключ -private Внутри текста комментария можно использовать специальные
тэги Стандартные теги HTML допустимы Запуск утилиты: javadoc [options] [packagenames] [sourcefiles] [@files]
![Page 16: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/16.jpg)
javadoc (пример)Используется формат HTML:
![Page 17: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/17.jpg)
Jar (Java ARchive)
Утилита для создания дистрибутивов Java программ
Пример: % jar cf myApp.jar *.class Все файлы текущей директории с расширением
.class собираются в архив myApp.jar. При этом автоматически создается манифест, содержащий мета-информацию о приложении
Использует алгоритм Zip Также можно сделать JAR файл
самораспаковывающимся Запакованное приложение можно запустить
двойным щелчком JAR файлы могут быть подписаны автором
![Page 18: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/18.jpg)
javap (дизассемблер)Разбирает класс-файл. Выводимая информация
варьируется в зависимости от используемых опцийПо умолчанию javap выводит название пакета, а
также protected и public поля и методы анализируемого класса
Запуск утилиты из командной строки: javap [ options ] class. . .Пример вывода информации о классе: Compiled from DocFooter.javapublic class DocFooter extends java.applet.Applet { java.lang.String date; java.lang.String email; public DocFooter(); public void init(); public void paint(java.awt.Graphics);}
![Page 19: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/19.jpg)
- Пример вывода байт кода класса
javap –c <classname> позволяет оценить структуру и сложность класс файла.
public ThreeD(); Code: 0: aload_0 1: invokespecial#1; //Method java/applet/Applet."<init>":()V 4: aload_0 5: iconst_1 6: putfield #2; //Field painted:Z 9: aload_0 10: fconst_1 11: putfield #3; //Field scalefudge:F 14: aload_0 15: new#4; //class Matrix3D 18: dup 19: invokespecial#5; //Method Matrix3D."<init>":()V 22: putfield #6; //Field amat:LMatrix3D; 25: aload_0 26: new#4; //class Matrix3D 29: dup 30: invokespecial#5; //Method Matrix3D."<init>":()V 33: putfield #7; //Field tmat:LMatrix3D;
![Page 20: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/20.jpg)
javap - опции
Показывает пакет, в котором расположен класс, а также его -protected и -public поля и методы. Данная опция используется по умолчанию.
-package
Выводит на печать сигнатуры внутренних типов.
-s
Выводит на печать размер стека, число локальных переменных, и параметров методов.
-verbose
Показывает все классы и члены классов.-private
Показывает только -public (-protected и -public) классы и члены классов.
-public (-protected)
![Page 21: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/21.jpg)
Другие базовые инструменты
Утилита для обнаружения конфликтов Jar.extcheck
Отладчик Java.jdb
Запуск и отладка апплетов без веб-браузера.
appletviewer
Утилита обработки аннотаций.apt
![Page 22: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/22.jpg)
Инструментарий обеспечения безопасности
Утилита с графическим интерфейсом, позволяющая управлять файлами политик.
policytool
Создание и проверка подписей архивов JAR.
jarsigner
Управление сертификатами и хранилищами ключей.
keytool
Установка собственных политик безопасности Использование политик безопасности, заданных
на удаленных сайтах
![Page 23: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/23.jpg)
Инструментарий обеспечения безопасности (продолжение)
Утилита командной строки, помогающая пользователю управлять записями в таблице ключей
ktab
Утилита командной строки, позволяющая работать со списком записей в кэше удостоверений
klist
Утилита просмотра удостоверений Kerberos v5kinit
Представленные инструменты системы безопасности помогут просматривать и управлять удостоверениями Kerberos
![Page 24: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/24.jpg)
Инструментарий интернационализации
Смена кодировки текста на Unicode Latin-1.native2ascii
Данный инструмент помогает создавать локализуемые приложения
![Page 25: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/25.jpg)
Инструментарий развертывания приложений• Утилиты, используемые для развертывания java
приложений и аплетов в сети
Преобразует архив, полученный при использовании pack200, в архив JAR.
unpack200
Преобразует файл JAR в сжатый файл pack200 при помощи системы сжатия данных gzip.
pack200
• Пересылаемые архивы представляют собой архивы JAR, которые сжаты сильнее чем обычно и при этом могут быть непосредственно развернуты средой исполнения
• За счет уменьшения размера файла, снижается время загрузки
![Page 26: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/26.jpg)
Инструментарий подключенияплагинов
Снимает регистрацию компонента JavaBeans; использует Active Xunregbean
Преобразует страницу (файл) HTML, содержающую апплет в формат OBJECT / EMBED для Java Plug-in
htmlconverter
Утилиты, используемые совместно с Java Plug-in
![Page 27: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/27.jpg)
Инструментарий удаленного вызова методов
Системный демон активации RMIrmid
Получение класса serialVersionUIDserialver
Сервис регистрации удаленных объектовrmiregistry
Генерация заглушек и каркасов для удаленных объектов
rmic
Данные инструменты позволяют создавать приложения, взаимодействующие между собой через веб-интерфейс или интерфейс любой другой сети
![Page 28: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/28.jpg)
Консоль контроля выполнения приложений
Имя хоста, на котором запущена JVM и номер портаhost:port Адрес агента JMX с которым следует установить соединение
jmxUrl
Идентификатор процесса локальной JVM. Идентификатор пользователя должен быть одним и тем же для JVM и jconsole
pid
Графический инструмент, удовлетворяющий стандарту JMX, для мониторинга виртуальной машины Java
Позволяет следить за работай как локальной, так и удаленной JVM.
Также помогает следить за работой приложения и управлять ею
Запускается следующей командой:jconsole [ options ] [ connection… ] connection = pid | host:port | jmxUrl
![Page 29: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/29.jpg)
Инструментарий веб-сервисов
Компилятор связываний в архитектуре XML связываний Java
xjc
Инструменты для генерации переносимых приложений JAX-WS
Wsimport, wsgen
Генератор схем в архитектуре XML связываний Java
schemagen
Обеспечивает легкую интеграцию веб-сервисов и веб-клиентов Позволяет прозрачно использовать формат XML для передачи
информации
![Page 30: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/30.jpg)
Экспериментальные инструменты Инструментарий мониторинга (jps, jstat, jstatd) Инструменты диагностики ошибок (jinfo, jhat,
jmap, jsadebugd, jstack) Инструменты работы со скриптами (jrunscript)
![Page 31: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/31.jpg)
Инструментарий мониторинга
Демон утилиты JVM jstat - загружает приложение RMI сервера, отслеживающее создание и завершение работы виртуальной машины Java (HotSpot)
jstatd
Утилита для ведения статистики по JVM (JVM Statistics Monitoring Tool) - Подключается к оборудованной виртуальной машине Java (HotSpot), собирает и заносит в журнал статистику по производительности
jstat
Отслеживает состояние процессов JVM (JVM Process Status Tool) - Выводит список виртуальных машин Java (HotSpot) в интересующей системе
jps
Может быть использован для учета статистических показателей производительности JVM
Данные инструменты работают на всех современных платформах
![Page 32: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/32.jpg)
Инструменты диагностики ошибок
Карта памяти Java - Выводит карты памяти разделяемых объектов или детали памяти кучи для заданного процесса, файла памяти или удаленного сервера отладки
jmap
Средство просмотра дампа кучи (Heap Dump Browser) - Стартует веб-сервис для файла, содержащего дамп кучи (например, созданного утилитой jmap с опцией -dump), позволяя просматривать содержимое кучи
jstat
Конфигурационная информация Java (Configuration Info for Java) - Выводит конфигурационную информацию для заданного процесса, файла памяти или удаленного сервера отладки
jinfo
![Page 33: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/33.jpg)
Инструменты диагностики ошибок (продолжение)
Трассировщик стека Java (Stack Trace for Java) - Выводит историю стека потоков для заданного процесса, файла памяти или удаленного сервера отладки
jstack
Демон отладки агента, занимающегося удобством эксплуатации приложения (Serviceability Agent Debug Daemon for Java) - Подключается к процессу или файлу памяти и действует в качестве сервера отладки
jsadebugd
![Page 34: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/34.jpg)
Инструменты работы со скриптами
Оболочка для скриптов в Java (Script shell for Java)jrunscript
Может быть использован для запуска скриптов, взаимодействующих с платформой Java
![Page 35: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/35.jpg)
Ссылки Технические статьи:
http://java.sun.com/javase/6/docs/technotes/tools/index.html
http://blogs.sun.com/dannycoward/date/20060310 http://java.sun.com/javase/6/docs/technotes/guides/mnagement/jconsole.html
![Page 36: Андрей Дмитриев Февраль 2008javac (компилятор языка Java) Преобразует исходный код в промежуточный байт-код](https://reader034.vdocument.in/reader034/viewer/2022042408/5f233d16070bfd4de4073b9c/html5/thumbnails/36.jpg)
Q&A