Лекция A1. Утилиты ####################################################################################### Core-утилиты =========================================================== Jar ----------------------------------------------------------- Программный архив Jar `````````````````````````````````````````````````````````` Программный архив **JAR** содержит ресурсы и class-файлы программы. Запуск программы: .. admonition:: Jar java -jar имя.jar Создание архива: #. Компиляция **javac *.java** #. Подготовка **Manifest**-файла: **Main-Class: Hello** #. Упаковка: **jar cvmf Hello.jar Mainfest.txt *.class** Запуск: **java -jar Hello.jar** Альтернативный запуск: **java -cp Hello.jar Hello** Javadoc ----------------------------------------------------------- Аннотации `````````````````````````````````````````````````````````` **Аннотация** — в языке Java специальная форма синтаксических метаданных, которая может быть добавлена в исходный код. Аннотации используются для анализа кода, компиляции или выполнения. Аннотируемы пакеты, классы, методы, переменные и параметры. Наиболее популярные аннотации: * **@Override** - проверка замещения метода. Вызывает ошибку компиляции, если метод не найден в родительском классе; * **@Deprecated** - отметка устаревания метода. Вызывает предупреждение компиляции, если метод используется; .. code-block:: java public class Figure { public void draw() { ... } } public class Point extends Figure { @Override // переопределено public void draw() { ... } @Deprecated // устарело public int getX() { ... } } Еще примеры аннотаций: .. code-block:: java @Author( name = "Vasya Pupkin", date = "10.10.2010" ) class MyClass() { } Аннотации javadoc `````````````````````````````````````````````````````````` .. code-block:: java /** * Returns an Image object that can then be painted on the screen. * * @param url an absolute URL giving the base location of the image * @param name the location of the image, relative to the url argument * @return the image at the specified URL * @see Image */ public Image getImage(URL url, String name) { try { return getImage(new URL(url, name)); } catch (MalformedURLException e) { return null; } } Документирование `````````````````````````````````````````````````````````` Рассмотрим исходный файл **DemoKey.java**: .. code-block:: java /** *
Класс "Ключ" - * простая абстракция ключа
* пока реализовано 3 метода */ class Key { /** * Вставка ключа в замок */ void push() { System.out.println("push key"); } /** * Поворот ключа */ void turn() { System.out.println("turn key"); } .. code-block:: java /** * Извлечение ключа из замка */ void pop() { System.out.println("pop key"); } /** * Метод открытия двери */ public void open() { push(); turn(); pop(); System.out.println("Open!"); } } .. code-block:: java /** *Демонстрация работы с ключом
* Ключ используется для открытия двери */ public class DemoKey { public static void main(String[] args) { Key key=new Key(); key.open(); } } Запуск **javadoc**: .. code-block:: none javadoc -charset utf-8 -private -d info DemoKey.java В этой команде: * **charset** - кодировка выходного документа (веб-страницы) * **private** - включать информацию о закрытых классах * **d** - каталог для размещения документацииы Результат: .. image:: _static/A1/javadoc1.png Автоматизация компиляции =========================================================== Ant ----------------------------------------------------------- .. image:: _static/A1/ant.png **Ant** - наиболее старая утилита автоматизации сборки Java-программ, похожая на **Make** Файл сборки (**build.xml**) включает в себя главный контейнер **project**, внутри которого расположены различные цели сборки (**targets**) .. code-block:: xml