Elettracompany.com

Компьютерный справочник
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Сторонние библиотеки java

Подключение библиотек в Java

Библиотека — готовый набор классов и компонентов, который встраивают в программу, чтобы реализовать некий функционал. Например, в тысячах казуальных игр музыку можно проигрывать одним и тем же способом. Чтобы не тратить время на работу со звуком, программисту достаточно подключить подходящую библиотеку.

Подключение Джава-библиотек в Eclipse

Если вы пользуетесь средой разработки Eclipse, подключение библиотек в Java займёт у вас меньше минуты:

Разворачиваем дерево проекта в Package Explorer и находим папку libs. Если её нет — создаем.

Кладем нужный .jar в libs.

В появившемся окне выбираем «копирование файлов» (copy files) и жмём OK.

Обновляем проект: правый клик — «Refresh».

Классы подключены и готовы к вызову из нашей программы.

Подключение библиотек Java в Maven и Apache-Ant

Минус подключения библиотек через IDE в том, что для пересборки проекта на другой машине нужна та же среда. Чтобы не зависеть от среды, используют системы сборки Maven и Ant.

Чтобы «прикрутить» библиотеку к проекту Maven, нужно указать её среди зависимостей в файле pom.xml. С библиотекой может подтянуться еще несколько зависимостей, которые подключаются к этой библиотеке. В случае с jar этого не происходит.

Как будет выглядеть наш pom.xml:

Теперь при компиляции проекта библиотека войдет в конечный .jar-файл.

В Ant принцип схожий, но редактировать нужно файл build.xml. Путь к подключаемым библиотекам пишут с помощью тегов <classpath> и <path>. Сначала объясняем, где искать библиотеку:

И далее передаём этот адрес тегу <classpath>:

Как подключить Java-библиотеку вручную

Ваша IDE умеет подключать библиотеки, но как она это делает? Давайте посмотрим, что происходит на уровне файлов. Если библиотека написана на Джаве, её компоненты хранятся либо в архиве .jar, либо в исходниках .java. Более сложный вариант с интеграцией библиотек на C++ пока рассматривать не будем.

Подключение jar-библиотек в Java

Если на компьютере только одна версия Джавы — всё просто. Чтобы подключить .jar, достаточно положить его в папку lib директории Java на жестком диске. Виртуальная машина при ближайшем запуске сама возьмет код из библиотеки.

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

Открываем терминал и пишем:

java -classpath ./classes ru.аuthor.libname.Main

ru.аuthor.libname.Main — наша библиотека

Точкой перед «/» отмечают текущую директорию.

Можно перечислить несколько библиотек, код из которых компилятор соберет в порядке их перечисления:

java -classpath ./classes;./lib/l1-0.1.jar;./lib/l2-1.5.jar ru. аuthor.libname.Main

Теперь вы умеете подключать библиотеки даже в нестандартной ситуации: когда не установлена IDE или нужно скорректировать очередность подключения.

Библиотека — готовый набор классов и компонентов, который встраивают в программу, чтобы реализовать некий функционал. Например, в тысячах казуальных игр музыку можно проигрывать одним и тем же способом. Чтобы не тратить время на работу со звуком, программисту достаточно подключить подходящую библиотеку.

Подключение Джава-библиотек в Eclipse

Если вы пользуетесь средой разработки Eclipse, подключение библиотек в Java займёт у вас меньше минуты:

Разворачиваем дерево проекта в Package Explorer и находим папку libs. Если её нет — создаем.

Кладем нужный .jar в libs.

В появившемся окне выбираем «копирование файлов» (copy files) и жмём OK.

Обновляем проект: правый клик — «Refresh».

Классы подключены и готовы к вызову из нашей программы.

Подключение библиотек Java в Maven и Apache-Ant

Минус подключения библиотек через IDE в том, что для пересборки проекта на другой машине нужна та же среда. Чтобы не зависеть от среды, используют системы сборки Maven и Ant.

Чтобы «прикрутить» библиотеку к проекту Maven, нужно указать её среди зависимостей в файле pom.xml. С библиотекой может подтянуться еще несколько зависимостей, которые подключаются к этой библиотеке. В случае с jar этого не происходит.

Как будет выглядеть наш pom.xml:

Теперь при компиляции проекта библиотека войдет в конечный .jar-файл.

В Ant принцип схожий, но редактировать нужно файл build.xml. Путь к подключаемым библиотекам пишут с помощью тегов и

. Сначала объясняем, где искать библиотеку:

И далее передаём этот адрес тегу :

Как подключить Java-библиотеку вручную

Ваша IDE умеет подключать библиотеки, но как она это делает? Давайте посмотрим, что происходит на уровне файлов. Если библиотека написана на Джаве, её компоненты хранятся либо в архиве .jar, либо в исходниках .java. Более сложный вариант с интеграцией библиотек на C++ пока рассматривать не будем.

Подключение jar-библиотек в Java

Если на компьютере только одна версия Джавы — всё просто. Чтобы подключить .jar, достаточно положить его в папку lib директории Java на жестком диске. Виртуальная машина при ближайшем запуске сама возьмет код из библиотеки.

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

Открываем терминал и пишем:

java -classpath ./classes ru.аuthor.libname.Main

ru.аuthor.libname.Main — наша библиотека

Точкой перед «/» отмечают текущую директорию.

Можно перечислить несколько библиотек, код из которых компилятор соберет в порядке их перечисления:

java -classpath ./classes;./lib/l1-0.1.jar;./lib/l2-1.5.jar ru. аuthor.libname.Main

Теперь вы умеете подключать библиотеки даже в нестандартной ситуации: когда не установлена IDE или нужно скорректировать очередность подключения.

Записки программиста

Функциональщик ботает Java — работа со сторонними библиотеками и хождение в РСУБД через JDBC

Итак, мы с вами настроили окружение для программирования на Java. Давайте же теперь попробуем что ли написать на ней какую-нибудь несложную программку, посерьезнее, чем Hello World. Например, программу, которая ходит в реляционную базу данных, выполняет какие-то запросы и получает результат.

Но сначала нам предстоит немного донастроить нашу IDE, в качестве которой, напоминаю, была выбрана IntelliJ IDEA. Идем в меню File → Settings → Editor и выбираем там галочку «Change font size (Zoom) with Ctr+Mouse Wheel». Это позволит менять размер шрифта в редакторе кода путем вращения колесика мыши при нажатом Ctr. Отрегулируйте размер шрифта в редакторе по своему вкусу и своим диоптриям.

Там же, в настройках, находим пункт Compiler. Ставим галочки Make project automatically и Compile independent modules in parallel. На наших, пока что небольших, проектах, параллельная фоновая компиляция не даст особого выигрыша, но в будущем это пригодится.

Как и положено нормальным программистам, код нового проекта мы будем держать в репозитории. Сходите на GitHub, BitBucket или чем вы там пользуетесь и заведите новый репозиторий. Лично я предпочитаю Git, но вы можете также выбрать Mercurial, Subversion или CVS. IntelliJ IDEA поддерживает их все. Клонируем куда-нибудь пустой репозиторий. Также можно воспользоваться готовым репозиторием. Например, у меня есть закрытый репозиторий на BitBucket, где я храню всякие поделки. Свой проект я разместил в подкаталоге этого репозитория.

Создадим новый проект. Как это делать, мы разобрались в предыдущем посте. В качестве groupId указываем ну например me.eax.examples, в качестве artifactId — JDBCExample, выбираем JDK 1.7, в качестве пути указываем путь к созданному ранее репозиторию или подкаталогу в уже существующем репозитории.

Читать еще:  Java lang stackoverflowerror null

Дополнение: Тут я немного накосячил в плане принятых соглашениями о выборе groupId и artifactId. В последнем не принято использовать заглавные буквы. Подробнее об этом можно прочитать здесь.

Далее говорим VCS → Enable Version Control Integration. Если теперь в нижней панели открыть окно Changes, можно заметить, что IDE предлагает закоммитить много ненужных файлов. Похоже, нам понадобится .gitignore. Хороший файл .gitignore был нагуглен тут. Создаем в проекте новый файл с именем .gitignore, на вопрос «добавить ли его в репозиторий?» отвечаем «да», затем пишем:

# Eclipse
.classpath
.project
.settings/

Как и в прошлый раз, создаем пакет, заводим в нем новый класс, добавляем все файлы в репозиторий. В результате должна получиться такая картинка:

Все файлы должны быть зеленые. Нажимаем кнопочку Commit Changes (Ctr+K). Отмечаем галочкой все файлы, вводим Commit Message (ого, спелчекинг!), жмем Commit → Commit and Push. Надо отметить, интеграция с системами контроля версий в IntelliJ IDEA просто отличная. Например, если нажать на вкладку Log (см скриншот), то можно увидеть очень красивый граф коммитов и прочую информацию. Есть удобный просмоторщик diff’ов и так далее. Советую изучить окно Changes повнимательнее, там много интересного.

Теперь мы готовы к написанию программы. В качестве СУБД воспользуемся PostgreSQL. Хождение в базы данных в мире Java осуществляется через JDBC. Это такой обобщенный интерфейс, аналогичный DBI в мире Perl и HDBC или HDBI в Haskell. JDBC позволяет нам переключаться с одной РСУБД на другую без изменения кода приложения (конечно, если мы не завязались на какие-то специфические возможности некой РСУБД). Также, например, при появлении новой РСУБД разработчиком достаточно лишь написать драйвер для JDBC, и сразу все джавные ORM’ы и веб-фреймворки начнут работать с этой РСУБД.

JDBC драйвер для PostgreSQL не входит в JDK, нам придется каким-то образом самостоятельно прикрутить его к нашему приложению. Сторонние библиотеки в мире Java распространяются через репозитории — публичные в интернете или частные в локальной сети компании. Мы воспользуемся одним из общедоступных репозиториев.

Идем в File → Settings → Maven → Repositories, выбираем repo.maven.apache.org, жмем Update. Репозиторий большой, получение списка пакетов из него в первый раз займет довольно много времени. К счастью, во второй и последующие разы все будет намного быстрее. Да и производить такое вот обновление требуется не слишком часто. За процессом можно следить в статусбаре внизу IDE.

Открываем файл pom.xml, жмем Alt+Insert, выбираем Dependency, в строке поиска вводим «org.postgresql:postresql», ждем, когда обновится список, затем выбираем org.postgresql:postgresql:9.2-1004-jdbc4. На момент написания этих строк также был доступен пакет 9.3-1101-jdbc41, но у меня он что-то не заработал («SQLException: No suitable driver found»), то ли из-за не той версии JDBC, то ли потому что у меня локально работает PostgreSQL 9.2, не знаю. Справа вверху появится сообщение «Maven projects need to be imported». Нажимаем «Enable Auto-Import» и больше о нем не вспоминаем. В окне Project (Alt+1) в Exteral Libraries теперь можно увидеть импортированную библиотеку. Соответствующий jar’ник будет автоматически загружен в:

Примечание: Тут мы каким-то образом заранее узнали имя нужного пакета. Искать пакеты можно, например, через mvnrepository.com или search.maven.org. Если провести аналогию с Haskell и Perl, то это своего рода аналоги Hackage и CPAN.

Нам может захотеться изучить документацию (JavaDoc) к драйверу PostgreSQL и, возможно, его исходники. Получить и то и другое можно либо выполнив в терминале, который, кстати, открывается нажатием Alt+F12:

… либо через окно Maven Projects, кнопку для открытия которого можно найти в правой панели. В File → Settings → Maven → Importing можно настроить IntelliJ IDEA так, чтобы она автоматически загружала исходники и/или документацию при добавлении новой зависимости (Automatically download).

Теперь вводим следующий код:

public class JDBCExample <
static final String host = «jdbc:postgresql:test_database» ;
static final String user = «test_user» ;
static final String pass = «qwerty» ;

public static void main ( String args [ ] ) <
try (
Connection conn = DriverManager . getConnection ( host, user, pass ) ;
Statement stmt = conn. createStatement ( ) ;
ResultSet rs = stmt. executeQuery ( «select * from phonebook» )
/* stmt.executeUpdate for insert, update or delete */
) <
while ( rs. next ( ) ) <
int id = rs. getInt ( «id» ) ;
String name = rs. getString ( «name» ) ;
String phone = rs. getString ( «phone» ) ;
Date changed = rs. getDate ( «last_changed» ) ;

System . out . format ( «%d %s %s %s n » , id, name, phone, changed ) ;
>
> catch ( SQLException e ) <
e. printStackTrace ( ) ;
>
>
>

При вводе кода IntelliJ IDEA может возмутиться — что-то по поводу настроек языка и переключения на использование Java 7. Если такое произойдет, соглашайтесь.

Здесь я использовал ту же базу данных, которую мы создали при написании телефонной книги на Haskell. Во время ввода кода IntelliJ IDEA будет заботливо предлагать автокомплит. Если отступы получатся немного неровными, привести код к одному code style можно нажатием Ctr+Alt+I. Кроме того, вы также можете посмотреть документацию к классам и их методам, поставив курсор на них и нажав Ctr+Q:

Кстати, обратите ваше внимание на использованную в коде конструкцию try with resources, появившуюся в Java 7. В случае возникновения любого исключения у объектов conn, stmt и rs будут автоматически вызваны методы close(). Раньше все это приходилось делать вручную, используя finally блок и проверяя, не равны ли переменные null. Должно быть, страшные были времена.

В старых туториалах можно прочитать что-то про необходимость написания Class . forName для того, чтобы подгрузить драйвер. Если вам попадется такой туториал, имейте в виду, что эта информация устарела и так делать давно не нужно.

Жмем Ctr+Shift+F10, проверяем, что программа работает. Например, у меня она вывела следующее:

Похоже на правду.

Как и в прошлый раз, можно собрать jar’ник, используя maven-assembly-plugin (не забываем поменять mainClass!). Но если вы просто скажете:

… то получите ошибку вроде:

Оказывается, по умолчанию Maven собирает проект, используя Java 1.3. А нам нужна Java 1.7. Эта проблема решается при помощи еще одного плагина. В pod.xml находим секцию plugins и дописываем:

Собираем jar’ник, проверяем его работу, сказав java -jar — в этот раз все должно получиться. Джарник увеличился в размере, но не сказать, что очень сильно. У меня его размер составил всего лишь около 580 Кб. Не забываем все это хозяйство закоммитить.

Кстати, чтобы в каждом новом проекте не заводить файл .gitignore и не заполнять pod.xml, можно сделать все это один раз, а затем сказать Tools → Save Project as Template. При создании нового проекта можно будет выбрать шаблон в списке User-defined (вместо Java/Maven, который мы выбирали до сих пор).

Такие дела. Как всегда, буду рад любым вашим комментариям.

Самое страшное в происходящем, что мне начинает нравится писать на Java…

Сторонние библиотеки java

Если предоставить в распоряжение программиста только язык программирования и не снабдить его набором готовых модулей, предназначенных для решения самых распространенных задач, ему придется отвлекаться на множество мелких деталей.

Читать еще:  Javascript trim string

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

Встроенные классы

В языке Java все классы происходят от класса Object, и, соответственно, наследуют методы этого класса. Некоторые библиотеки классов подключаются автоматически, и мы будем называть их встроенными. К таким относится, в частности, библиотека с названием java.lang. Другие библиотеки классов вы должны подключать в исходном тексте приложения Java явным образом с помощью оператора import.

Замещающие классы

Очень часто в наших приложениях вместо базовых типов переменных мы будем использовать объекты встроенных классов, которые называются замещающими классами (wrapper classes). Ниже мы перечислили названия этих классов и названия базовых типов данных, которые они замещают:

Заметим, что для преобразования базовых типов данных в объекты замещающего класса и обратно вы не можете применять оператор присваивания. Вместо этого необходимо использовать соответствующие конструкторы и методы замещающих классов.

Класс String

Класс String предназначен для работы с такими часто встречающимися объектами, как текстовые строки. Методы этого класса позволяют выполнять над строками практически все операции, которые вы делали раньше при помощи библиотечных функций C. Это преобразование строки в число и обратно с любым заданным основанием, определение длины строки, сравнение строк, извлечение подстроки и так далее.

Хотя в языке Java не допускается перезагрузка (переопределение) операторов, для объектов класса Stirng и объектов всех произошедших от него классов сделана встроенная перезагрузка операторов «+» и «+=». С помощью этих операторов можно выполнять слияние текстовых строк, например:

Здесь в качестве параметра функции println передается текстовая строка, составленная из трех компонент: строки «x = «, числа x и символа перехода на следующую строку ‘n’. Значение переменной x автоматически преобразуется в текстовую строку (что выполняется только для текстовых строк) и полученная таким образом текстовая строка сливается со строкой «x = «.

Другие встроенные классы

Среди других встроенных классов отметим класс Math, предназначенный для выполнения математических операций, таких как вычисление синуса, косинуса и тангенса.

Предусмотрены также классы для выполнения запуска процессов и потоков, управления системой безопасности, а также для решения прочих системных задач.

Библиотека встроенных классов содержит очень важные классы для работы с исключениями. Эти классы нужны для обработки ошибочных ситуаций, которые могут возникнуть (и возникают!) при работе приложений или аплетов Java.

Подключаемые библиотеки классов

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

Библиотека классов java.util

Библиотека классов java.util очень полезна при составлении приложений, потому что в ней имеются классы для создания таких структур, как динамические массивы, стеки и словари. Есть классы для работы с генератором псевдослучайных чисел, для разбора строк на составляющие элементы (токены), для работы с календарной датой и временем.

Библиотека классов java.io

В библиотеке классов java.io собраны классы, имеющие отношение к вводу и выводу данных через потоки. Заметим, что с использованием этих классов можно работать не только с потоками байт, но также и с потоками данных других типов, например числами int или текстовыми строками.

Библиотека классов java.net

Язык программирования Java разрабатывался в предположении, что им будут пользоваться для создания сетевых приложений. Поэтому было бы странно, если бы в составе среды разработки приложений Java не поставлялась библиотека классов для работы в сети. Библиотека классов java.net предназначена как раз для этого. Она содержит классы, с помощью которых можно работать с универсальными сетевыми адресами URL, передавать данные с использованием сокетов TCP и UDP, выполнять различные операции с адресами IP. Эта библиотека содержит также классы для выполнения преобразований двоичных данных в текстовый формат, что часто бывает необходимо.

В качестве примера приложения, составленного на языке программирования Java и ориентированного на работу в сети Internet, можно привести игру Java Color Lines (рис. 7).

Для того чтобы увидеть рисунок в увеличенном виде, сделайте щелчок мышью по изображению

Это сетевая версия известной игры Lines, которая выполнена в виде нескольких аплетов, взаимодействующих между собой и между сервером Web, на котором они расположены. Так как список имен игроков и достигнутых ими результатов хранится на сервере, вы можете поучаствовать в мировом турнире, сразившись с игроками из разных стран.

Библиотека классов java.awt

Для создания пользовательского интерфейса аплеты Java могут и должны использовать библиотеку классов java.awt. AWT — это сокращение от Abstract Window Toolkit (инструментарий для работы с абстрактными окнами).

Классы, входящие в состав библиотеки java.awt, предоставляют возможность создания пользовательского интерфейса способом, не зависящим от платформы, на которой выполняется аплет Java. Вы можете создавать обычные окна и диалоговые панели, кнопки, переключатели, списки, меню, полосы просмотра, однострочные и многострочные поля для ввода текстовой информации.

Библиотека классов java.awt.image

В среде любой операционной системы работа с графическими изображениями является достаточно сложной задачей. В операционной системе Windows для этого применяется графический интерфейс GDI. Если вы будете рисовать графические изображения в среде OS/2 или X-Windows, вам, очевидно, придется использовать другой программный интерфейс. Большую сложность также вызывает разбор заголовков графических файлов, так как они могут иметь различный формат и иногда содержат неправильную или противоречивую информацию.

10 лучших инструментов, плагинов и библиотек для разработки на Java

Наличие правильных инструментов позволяет программистам на Livecoding.tv создавать высококачественные продукты. Сегодня мы поделимся некоторыми нашими секретами о том какие продуктивные инструменты, плагины и библиотеки используют Java программисты.
Что такое Java?

Согласно официальному веб-сайту Java : “Java представляет собой язык программирования и платформу вычислений, которая была впервые выпущена Sun Microsystems в 1995 г. Существует множество приложений и веб-сайтов, которые не работают при отсутствии Java, и с каждым днем число таких веб-сайтов и приложений увеличивается. Java отличается быстротой, высоким уровнем защиты и надежностью. От портативных компьютеров до центров данных, от игровых консолей до суперкомпьютеров, используемых для научных разработок, от сотовых телефонов до сети Интернет — Java повсюду!”. Недавно Oracle подала судебный иск с ошеломляющими $ 9,3 млрд против Google, которая использовала интерфейс протокола приложений Java. Таково проникновение Java в современный мир.

Вот 10 лучших инструментов, плагинов и библиотек для разработки на Java рекомендуемых разработчиками Livecoding.tv:

Gradle

Gradle это система автоматической сборки, по словам инженероа Livecoding.tv это квантовый скачок технологий сборки в мире Java (JVM).

Eclipse

Удивительное open source сообщество инструментов, проектов и совместных рабочих групп. Eclipse предоставляет среду разработки почти для каждого языка программирования и архитектуры.

Читать еще:  Маткад ошибка значение должно быть скалярным

YourKit

YourKit является технологическим лидером, создателем самых инновационных и интеллектуальных инструментов для профилирования Java и .NET приложений. YourKit Java Profiler уже признана ИТ-специалистами и аналитиками как лучший инструмент профилирования.

Clover

Clover это еще один инструмент для повышения производительности. Clover предоставляет метрики, которые балансируют усилия между написанием кода, который делает, и кодом который тестирует. Clover работает в IDE и включает в себя оптимизацию тестов, что ускоряет их выполнение.

Mockito

Mockito — прекрасная мок-библиотека для Java. Она позволяет писать красивые тесты с простой и чистой API.

Jetty

Jetty — свободный контейнер сервлетов, написанный полностью на Java. Может использоваться как HTTP-сервер или в паре со специализированным HTTP-сервером (к примеру, с Apache HTTP Server). Jetty используется в самых разнообразных проектах и продуктах, может быть встроен в устройства, инструменты, фреймворки, серверы приложений, и кластеры.

Hibernate

Hibernate — библиотека для языка программирования Java, предназначенная для решения задач объектно-реляционного отображения (object-relational mapping — ORM). Данная библиотека предоставляет легкий в использовании фреймворк для отображения объектно-ориентированной модели данных в традиционные реляционные базы данных.

Guava

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

FindBugs

FindBugs это программа, которая использует статический анализ для поиска ошибок в Java коде. Это бесплатное программное обеспечение, распространяется на условиях GNU Public License.

Java Decompiler

“Java Decompiler project” направлен на разработку инструментов с целью декомпилировать и анализировать Java 5 “byte code” и более поздние версии. Программисты Livecoding.tv описывают его как очень удобный инструмент который повышает производительность труда.

Теперь у вас есть 10 лучших инструментов, плагинов и библиотек для работы с Java, которые помогут вам стать более продуктивным. Какие ваши любимые помощники в работе Java? Что мы пропустили в списке, что обязательно должно присутствовать?

Сборка и выполнение Java программ

Сборка проекта

Сборка (англ. assembly) — двоичный файл, содержащий исполняемый код программы или (реже) другой подготовленный для использования информационный продукт.

Автоматизация сборки — этап написания скриптов или автоматизация широкого спектра задач применительно к ПО, применяемому разработчиками в их повседневной деятельности, включая такие действия, как:

  1. компиляция исходного кода в бинарный код
  2. сборка бинарного кода
  3. выполнение тестов
  4. разворачивание программы на производственной платформе
  5. написание сопроводительной документации или описание изменений новой версии

Для автоматизации сборки проектов традиционно используют системы сборки, такие как make на Unix подобных системах и nmake для компилятора Microsoft. Также традиционно написание файлов для сборки проекта под эти системы является задачей нетривиальной. Конечно, пользуясь только Mictosoft Visual Studio можно даже не подозревать о существовании этих файлов, так как интегрированная среда разработки достаточно удобно скрывает всю схему работы, оставляя снаружи несколько диалоговых окон и кнопку Build. Но для сложных проектов использующих массу сторонних библиотек и кроссплатформенных проектов такой подход часто оказывается неприемлемым.

Принципы сборки в java

1. Как работает java компилятор

Текст программы — это исходный код программы на языке java.

Дополнения — это классы, которые необходимо учитывать во время сборки (библиотеки).

В итоге мы получаем набор файлов с расширением class. То есть, если мы используем сторонние библиотеки – мы должны указать их при сборке. Это могут быть скомпилированные классы или собранные подсистемы.

Не всегда для компиляции необходимо указывать дополнительные библиотеки (к примеру, если у нас программа в 1 программный файл). Но если всё же это необходимо, то для этого компилятор java необходимо запустить с аргументом «-cp» (сокращение от —classpath). После этого аргумента идёт список библиотек (jar файлов или файлов class) разделённых символом разделителем файлов (в *nix это «:», в windows это «;»).

Пример компиляции программы из одного файла:

javacHelloWorld.java

Пример компиляции программы c дополнительными библиотеками «myLib» и «my2ndLib»:

javac -cp myLib.jar:my2ndLib.jar NotStandartHelloWorld.java

В java нет разграничения между собранной библиотекой, исполняемым приложением или же подсистемой. Что имеется в виду, что если вы хотите создать самостоятельную сущность в едином файле, вы создаёте jar файл. К примеру, если вы создаёте библиотеку, то это будет jar файл с набором классов, который могут быть использованный другими разработчиками, если это подсистема, то это часть функционала (набор классов) вынесенная за рамки основного модуля, но используемая в нём (что то вроде частной библиотеки), и т.д..

2. Выполнение java-программы.

Выполнение классов работает схожим образом с компиляцией (используются даже те же аргументы).

Если после компиляции у нас получилось 10 классов, то выполняем только класс который содержит функцию main, остальные классы должны быть представлены как библиотеки.

К примеру, запуск программы c дополнительными библиотекой «sout», которая находиться в папку «lib» выглядеть так:

java -cp lib/sout.jar HelloWorld

По умолчанию, все классы в текущем каталоги включены в пути (-cp для классов в текущем каталоге указывать не надо). Что имеется в виду, если мы скомпилировали программу, и в итоге получили множество классов в одной папке, то мы можем запускать только лишь главный класс, остальные классы java попробует найти сама в текущем каталоге (Даже если они находятся во вложенных папках, java и туда заглянет).

Такой подход допустим, когда у нас немного классов, но при больших системах перечисление всех классов не возможно (их количество может превышать тысячи …). Поэтому можно выполнять не класс, а специально собранный jar-файл. Для этого необходимо указать аргументы -jar.

java -cp lib.jar -jar myApp.jar

3. Jar-файл

Jar-файл — это ZIP архив (то есть вы можете разархивировать его). Jar-файл должен в себе содержать набор классов и файл META-INF/MANIFEST.MF, в котором описаны характеристики данного jar-файла.

Основной вариант создания Jar-файла:
jar cf jar-file input-file(s)

Jar – это утилита и набора утилит которые вы получаете при установке java.

Программа jar принимает аргументы в old-UNIX стиле: вначале идут ключи потом аргументы программы, ключ с аргументом указывается последним, не указывать «-» перед аргументами, группировать короткие аргументы («cf» значит «-c -f »).

  1. Опция c — говорит о том, что вы хотите создать (create) jar-файл.
  2. Опция f — говорит о том, что вы хотите создать файл (file) с определённым именем (при выполнении данного примера создастся файл с именем «jar-file.jar»).
  3. Аргумент input-file(s) является разделенный пробеламисписок из одного или нескольких файлов, которые вы хотите включить в ваш JAR-файл. input-file(s) аргумент может содержать символ «*». Если любой из входных является каталогом, содержимое этих каталогов добавляются в архив JAR рекурсивно.

Когда вы создаете JAR-файл, он автоматически получает файл манифеста по умолчанию (если вы его не указали во входных файлах – он будет создан автоматически). В jar-файле может быть только один файл манифеста с указанным путём:

Ссылка на основную публикацию
Adblock
detector