Работа с JAR-файлами

Э

Та глава посвящается работе с JAR-файлами. Дополнительные сведения по это­му же поводу вы сможете найти в следующей главе. В данной главе предложу вам ознакомиться с основами JAR-файлов, а в главе 28 — с развертыванием прило­жений, содержащихся в JAR- и выполняемых файлах.

В этой главе будут освещены следующие вопросы:

■ Роль JAR-файлов в проектах, разработанных на Java. Понимание роли JAR — файлов является необходимым условием для создания сложных проектов, ко­торые достаточно легко сопровождать. Этот раздел главы будет посвящен об­щим вопросам программирования на языке Java, а не исключительно среде JBuilder. Он введен просто потому, что многие книги упускают данную тему из рассмотрения. Учебники по программированию на языке Java считают, что эта тема слишком сложна для начинающих, в то время как авторы книг для опытных программистов полагают, что описание основ программирования является чересчур уж простой темой для их круга читателей. Как результат, очень сложно найти хорошую книгу, посвященную основам программирова­ния на языке Java.

■ Как создавать JAR-файлы, содержащие утилиты, которые можно использо­вать в нескольких проектах.

■ Как добавлять JAR-файлы в JBuilder-проекты, содержащие библиотечные файлы. Это исключительно важный вопрос, поскольку JAR-файлы интенсив­но используются при разработке проектов на языке Java. Данный вопрос бу­дет рассмотрен в конце главы. Если вас не интересует тема создания JAR-фай­лов, пропустите все вплоть до раздела, рассматривающего использование JAR-файлов в программах на языке Java.

■ Как создавать проекты, содержащие. class-файлы, которые не сопровождают­ся исходным кодом. Процесс создания проектов подобного рода достаточно прост, но для этого вы должны иметь представление о файлах библиотек сре­ды JBuilder.

■ Как компилировать проекты, использующие JAR-файлы, в режиме команд­ной строки.

Наиболее важной концепцией, которая будет рассмотрена в этой главе, является, по-видимому, концепция библиотек JBuilder. Библиотеки в среде JBuilder выполня­ют ту же роль, что и пути классов во время компиляции проекта из командной стро­ки с помощью средств JDK. В частности, библиотеки в среде JBuilder можно ис­пользовать для указания путей классов в вашей системе.

Эта глава неразрывно связана со следующей главой, в которой будут рассмотрены вопросы развертывания. Обе главы имеют отношение к созданию JAR-файлов. На­значение настоящей главы заключается в объяснении процесса интеграции JAR- файлов в развертывание проектов JBuilder, в то время как назначение главы 28 — де­монстрация включения всего проекта в отдельный JAR-файл. Кроме того, JAR-фай — лы будут рассматриваться в части VII, в которой вы научитесь помешать компоненты в JAR-файлы. И, наконец, мы поговорим о JAR-файлах в конце главы 43, где будут рассмотрены вопросы развертывания приложений, использующих не­сколько JAR-файлов. Таким образом, JAR-файлы являются очень важной частью процесса разработки Java-приложений, поэтому им и уделено настолько большое внимание в книге.

При изучении примеров, приведенных в настоящей главе, важную роль играет дерево каталогов проектов. В частности, на жестком диске вашего компьютера в тре­буемом каталоге должны находиться файлы MathBox. Java И StringBox. Java. Эти файлы являются частью JAR-файла библиотеки CodeBox, о которой шла речь в главе 25. В настоящей главе будут приведены указания по правильному размещению фай­лов MathBox. Java И StringBox. Java. Тем не менее, если вы правильно следовали всем указаниям, приведенным в предыдущих главах, ваш компьютер уже должен быть соответствующим образом настроен. Если же настройки компьютера не соот­ветствуют требованиям, файлы можно установить, воспользовавшись сопровождаю­щими книгу материалами, которые, как вы уже, должно быть, знаете, доступны для выгрузки и в Internet. Ссылку на страницу выгрузки материалов можно найти на моем сайте по адресу Http://Www.Elvenware.Com, А также на сайте издателя рус­скоязычной редакции этой книги.

Описание JAR-файлов

JAR-файлы — это технология, основанная на формате архивов zip, которая позво­ляет записать каталоги и файлы в один контейнер. Для всех практических целей они являются одной из форм файлов tar — или zip-формата, адаптированной под раз­работку проектов на языке Java. Фактически большинство программ, которые рабо­тают с различными технологиями сжатия файлов, будут работать и с файлами в фор­мате JAR. Так, например, широко известное приложение WinZip может открывать не только zip — и tar-файлы, но также и JAR-файлы.

Тем не менее, основное назначение JAR-файлов несколько отличается от назна­чения tar — и zip-файлов. В частности, код, как правило, запускается непосредствен­но из JAR-файла, в то время как zip-файлы, в основном, используются в качестве способа хранения файлов. Таким образом, несмотря на то, что технологии zip и JAR практически ничем не отличаются, их назначение совершенно различно.

В этой главе мы рассмотрим JAR-файлы, содержащие несколько. class-файлов, которые будут задействованы в основной программе. В главе 28 будут рассмотрены JAR-файлы, включающие основную программу и используемые ею файлы.

JAR-файлы могут отслеживать не только помещаемые в них. class-файлы, но и структуру каталогов, в которой находятся файлы классов и используемые в проекте ресурсы. Как результат, JAR-файлы могут содержать как файлы классов, так и паке­ты и битовые карты.

Ниже приведено перечисление основных связей JAR-файлов и Java-программ.

■ Поскольку JDK и JRE хранятся в JAR-файлах, все программы на Java исполь­зуют JAR-файлы. Тем не менее, в некоторых случаях программы на Java могут ссылаться не только на JAR-файлы, поставляемые компанией Sun. При ис­пользовании класса, хранящегося в JAR-файле, иногда приходится указывать каталог, т. е. пакет, в котором находится нужный JAR-файл. В частности, сле­дует убедиться, что каталог присутствует в путях классов. В среде JBuilder это, как правило, делается путем настройки библиотечного файла. Библиотечные файлы рассматриваются далее в этой главе. (В последних версиях JDK и JRE вам не придется беспокоиться о помещении JAR-файлов в пути классов. Этот процесс реализуется автоматически.)

■ JAR-файлы могут содержать пакеты. Фактически большинство JAR-файлов будет содержать не только файлы классов, но и структуру каталогов, в которой эти файлы располагаются Во многих случаях JAR-файлы можно считать кон­тейнером для набора пакетов.

Зачем нужны пакеты?

Пакеты обладают следующими преимуществами:

■ Они позволяют эффективно организовать код

■ Они позволяют избежать конфликтов имен. Класс с именем MyPackage.MyCiass Будет отличаться ОТ Класса С именем YourPackage.MyClass

■ Они позволяют повторно использовать код. После создания пакета его мож­но использовать в нескольких проектах.

■ Они будут функционировать на всех платформах. Все компьютеры поддержи­вают концепцию каталогов. Когда разработчики создавали язык Java, им было необходимо средство, которое бы позволило отличать один файл от другого, что дало бы возможность без ошибок компоновать проекты. При этом техно­логия должна была быть независимой от платформы. Решение, которое на­шли специалисты компании Sun, заключается в использовании пакетов.

■ Использование пакетов в языке Java значительно расширилось после приня­тия решения о том, что каждый открытый класс должен находиться в своем собственном файле исходного кода. Это решение во много раз увеличило ко­личество файлов, входящих в состав JDK и других проектов. Пакеты были не­обходимы для группировки столь огромного числа файлов.

При использовании пакетов необходимо помнить, что действительное располо­жение пакета на жестком диске для Java не всегда играет важную роль. Рассмотрим следующую структуру каталогов

<:: Teπ.PMyPackageSam. Java F:GoobβrMyPackageTom.Java

В приведенном примере, если каталоги c:\temp и f:\goober указаны в путях классов, Java будет рассматривать

примечаниеC:\Temp\MyPackage\Sam.Java И F:\Goober\MyPackage\Tom.Java Как один и тот же пакет. Это может привести к нежелательным ошибкам.

Несмотря на теоретическую возможность, я не считаю рациональным помещать пакеты в каталог с тем же именем. Например, следует избегать таких струк­тур, как c:\goober\MyPackage\MyPackage\MyPackage. jpr. И хотя подобная структу­ра может и не привести к неприятным последствиям, тем не менее, при работе в среде JBuiIder она может привести к путанице. Приведенную выше структуру лучше преобра­Зовать к виду C:\Goober\MyPackage\MyPackage.Jpr.

JAR-файлы и пути классов

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

Каждый JAR-файл содержит файлы классов, которые, как правило, организова­ны в виде пакетов. Таким образом, структура каталогов присутствует в двух местах:

■ каталоги, находящиеся на жестком диске компьютера;

■ каталоги, содержащиеся в JAR-файле.

Для успешного использования JAR-файлов нужно всегда помнить об этих двух составляющих дерева каталогов.

Давайте-ка рассмотрим процесс настройки.

Сначала необходимо указать в глобальных путях классов или файле библиотеки среды JBuilder расположение конкретного JAR-файла. После этого пакеты в JAR — файле могут считаться обычными пакетами, находящимися на жестком диске.

Рассмотрим пример. Пусть JAR-файл с именем MyCode. jar Находится в каталоге C:\src\classes. В Файле MyCode. jar Содержится пакет Com. mycompany. utils.

Чтобы получить возможность ссылаться на файлы в каталоге utiɪs JAR-файла, поместите путь к файлу MyCode. Jar в путь классов. Для этого в Linux можно вос­пользоваться следующим сценарием:

Export CLASSPATH=$CLASSPATH:∕home∕UserName∕src∕classes∕MyCode. jar

Тот же сценарий для операционной системы Windows выглядит следующим об­разом:

примечаниеSet CLASSPATH=%CLASSPATH%;с:∖src∖classes∖MyCode. jar

В среде Windows при необходимости ссылки на содержимое пере­менной среды ее имя помещается в символы %. Например, для ссылки на текущее содержимое пути, хранящееся в переменной среды PATH, используется синтаксис %PATH%. В операционной системе Linux для той же цели служит символ $. Как резуль­тат, ссылка $CLASSPATH в Linux указывает на переменную среды CLASSPATH.

Таким образом, два приведенных выше оператора устанавливают значение переменой среды CLASSPATH равным текущему значению CLASSPATH плюс новый путь к JAR-фай — лу. Список переменных среды можно просмотреть, набрав в командной строке set. Для просмотра значения одной конкретной переменной среды используется команда Echo (echo $РАТН или Echo %PATH%).

После установки значения пути классов для получения доступа к пакету utils в файлы исходного кода потребуется включить следующий оператор:

Inport com. mycompany. utils.*

Таким образом, доступ к JAR-файлу можно получить, указав путь к нему в пере­менной Classpath Среды или ссылку на него в библиотечном файле JBuilder. После помещения файла MyCode. jar В каталог, в котором он будет доступен для использо­вания, можно забыть, что MyCode. jar Представляет собой файл, поскольку на него можно ссылаться как на каталог MyCode.

При добавлении пути к файлу MyCode. Jar в путь классов фактически вы создаете на жестком диске новые каталоги. При этом мы получаем ситуацию, когда структура каталогов на диске выглядит следующим образом:

С:∖src∖classes∖MyCode∖com∖mycompany∖utils

∕home∕UserName∕src∕classes∕MyCode∕com∕mycompany∕utils∕

В двух приведенных здесь примерах первая строка соответствует операционной системе Windows, а вторая — операционной системе Linux. Важным в приведенных примерах является то, что MyCode Считается каталогом, а не JAR-файлом. Именно так JAR-файлы интерпретируются в Java: JAR-файлы считаются расширением жест­кого диска.

Давайте подробнее рассмотрим то, о чем только что шла речь. Чтобы опреде­лить, находится ли используемый пакет в JAR-файле, нужно понимать, что путь к пакету состоит из трех частей:

■ Первая часть — это путь на жестком диске к JAR-файлу. Этот путь должен со­держаться в пути классов или на него должна иметься ссылка в библиотечном файле JBuilder.

■ Вторая часть представляет собой сам JAR-файл.

■ И, наконец, третья часть является содержимым JAR-файла, в частности, паке­тами, которые хранятся в файле. Доступ к пакетам в JAR-файле можно полу­чить с помощью оператора import.

Часть пути, которая находится на жестком диске, выглядит следующим образом: С:SrcClassesMyCode. jar

Она разделена на две части: путь к JAR-файлу и имя самого JAR-файла.

Часть пути, которая находится в JAR-файле, выглядит следующим образом: Com. mycompany. utils

Внутри программы эта часть будет выглядеть так: Import com. mycompany. utils.*;

Чтобы добраться до файлов в пакете С:SrcClassesMyCode. jАсCom. mycompany. utils

Необходимо помнить обо всех частях пути Правильная установка пути классов обеспечивает выбор первых двух частей пути О Третьей части пути вы должны поза­ботиться отдельно, определив в коде соответствующий оператор import.

В первый раз это достаточно сложно как для понимания, так и для объяснения простыми словами. Тем не менее, стоит хотя бы раз сделать все на практике, и вско­ре вы достигнете того уровня, когда пути классов уже не будут для вас загадкой. Лишь некоторые вопросы в вычислительной технике (и таких вопросов очень не­много) остаются сложными, даже если вы правильно их понимаете. Тем не менее, нашу тему вряд ли можно отнести к вопросам подобного рода. Несмотря на то что она достаточно сложна для понимания, она очень проста в реализации. Это как раз тот случай, когда у вас однажды наступает просветление, после которого никаких проблем не остается.

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

Создание и использование JAR-файлов

Наконец-то мы готовы взобраться на самую вершину, к которой приближались на протяжении нескольких последних глав. C этой вершины мы сможем подробно рассмотреть концепцию использования JAR-файлов в J Builder-проектах. Располагая знаниями, полученными до этого момента, вы сможете легко увидеть способы структуризации даже наиболее сложных проектов.

Настало время создать простой JAR-файл и использовать его из среды JBuilder. Когда вы научитесь создавать и пользоваться JAR-файлами, то сможете работать с JAR-файлами, поставляемыми со стороны независимых разработчиков, например, с файлами Xerces. Jar и Soap. jar. Такие файлы играют очень важную роль во многих Java-πpoeκτax, разрабатываемых на сегодняшний день.

Эта часть главы разделена на три раздела:

■ Первая часть рассказывает о настройке и тестировании файлов, которые ста­нут частью JAR-файла.

■ Во второй части рассматриваются два способа создания JAR файла.

■ Третья часть будет посвящена использованию созданного JAR-файла. JAR — файл будет применяться сам по себе, без ссылки на исходный класс и файлы исходного кода, на основе которых был создан этот JAR-файл.

Настройка тестовой программы

В этом разделе будет создана стандартная программа Java, предназначенная для тестирования различных частей JAR-файла CodeBox, который мы собираем­ся создать. Этот JAR-файл будет содержать откомпилированный код файла

примечаниеStringBox. java, Который разрабатывался на протяжении нескольких последних глав. Кроме того, в JAR-файл будут включены файлы MathBox. java И FileBox. java. Они содержат дополнительные сервисные функции, которые могут понадобиться в будущих программах.

Важно понимать, что утилита JUnit1 о которой будет рассказано в пос­ледующих главах книги, использоваться не будет. Утилита JUnit позволяет легко создавать и тестировать Java-классы. Назначение тестов заключается в проверке того, что код работа­ет так, как предполагалось. Утилита JUnit как раз представляет собой очень удобный инст­Румент для тестирования кода, однако я хочу рассмотреть ее в отдельной главе.

Тем не менее, утилиту JUnit очень сложно использовать для тестирования про­грамм, содержащих графический интерфейс пользователя. Поэтому, как правило, для тестирования кода применяются тесты двух видов. Один будет рассмотрен в на­стоящем разделе, а второй тест можно разработать с помощью утилиты JUnit.

Проект, который мы будет создавать, называется ManagecodeBoxSimple. Как и все примеры, рассматриваемые в книге, он содержится в сопровождающих материа­лах, которые доступны на Web-сайтах Www.Diasoft.Kiev.Ua И Www.Elvenware.Com. Создаваемый проект ПОЗВОЛИТ Откомпилировать файлы MathBox, StringBox И FiieBox И выполнить для них отдельные простые тесты. Начнем с создания нового проекта ManagecodeBoxSimple В каталоге ComplexProjects, Как было описано B главе 3. Добавьте в проект приложение. Заполните страницу Paths диалогового окна Project Properties, как показано на рис. 27.1.

рис. 27.1. выберите в меню project ∣ project properties и укажите jbuilder, где искать каталог src с исходными файлами codebox

примечаниеВ состав сопровождающих книгу материалов входят два проекта с именами, которые начинаются с ManageCodeBox. Один назван ManagecodeBoxSimple, а второй — просто ManageCodeBox. Поскольку книга предназначена для читателей, ра­ботающих с разными версиями среды JBuiIder, мне пришлось создать отдельные струк­туры каталогов файлов CodeBox, включающих подкаталоги для редакций Personal, SE и Enterprise. В этой главе я не хотел бы, чтобы вы сталкивались с проблемами, поэтому в качестве примера я использую простой проект ManagecodeBoxSimple, который может работать во всех редакциях JBuiIder. Проект ManageCodeBox будет работать только в ре­дакции Enterprise. Окончательная версия пакета CodeBox находится в подкаталоге src корневого каталога примеров. Там же находятся сценарии для компиляции окончатель­ной версии файла codebox. jar в каждой редакции JBuiIder.

Все параметры, содержащиеся на странице Paths диалогового окна Project Properties (см. рис. 27.1), не требуют пояснений, за исключением добавления в па­нели исходного кода каталога ComplexProjects∕src. Это каталог, в котором хранится исходный код пакета codebox. Структура каталога CompiexProjects/Src Выглядит следующим образом:

../ComplexProjectsSrcComElvenwareCodebox

В каталоге ComplexProjects Находится несколько проектов, которые будут рас­сматриваться в последующих главах. Многие из них используют исходный код паке­та codebox. Как результат, код пакета codebox был помещен в каталог Src, В котором он может использоваться всеми проектами. В реальной жизни часто случаются си­туации, когда приходится делать то же самое.

рис. 27.2. если вдруг возникли вопросы касательно визуальных компонентов в данном приложении, внимательно изучите панель структуры на этом рисункеВ панели содержимого выберите Framel и перейдите в режим конструирования. Поместите на форму элементы управления JButton и JTextArea, как показано на рис. 27.2.

В листинге 27.1 приведен исходный код основного модуля проекта. Он содержит простой метод для тестирования, по крайней мере, части кода, находящегося в ка­талоге codebox. Как уже упоминалось, ниже в книге будет показано, как использо­вать утилиту JUnit для тестирования многих методов исходного кода.

Для создания файла, содержимое которого показано в листинге 27.1, в начало файла поместите оператор Import Com.EɪVenware.Codebox.*. Затем перейдите в режим конструирования и создайте обработчик события для кнопки, выполнив на ней двойной щелчок. Введите для кнопки следующий код:

Void JButtonl_ActionPerformed(ActionEvent Е)

{

String S = StringBox. reverse("Sam"); jTextAreal. setText(S);

>

Это предоставит вам простой способ тестирования кода модулей из пакета codebox.

Листинг 27.1. Фрагмент исходного кода программы ManagecodeBoxSimpIe

Package Inanagecodeboxsimple;

Import j ava. awt. * ;

Import java. awt. event. *;

Import javax. swing.*;

Import com. eɪvenware. codebox.*;

Public class Framel extends JFrame

{

JFanel ContentPane;

BorderLayout borderLayoutl = new BorderLayoutO;

JButton jButtonl = new JButton();

JTextArea j TextAreal = new JTextAreaO;

∕∕ Создание Фрейма

Public Framel()

{

EnableEvents(AWTEvent. WINDOW_EVENT_MASK); try (

Jblnit();

}

Catch(Exception e)

{

E. printStackTrace ();

}

)

∕∕ Инициализация Компонент Private void jbɪnit() throws Exception {

ContentPane = (JPanel) this. getContentPane(); jButtonl. SetText (» jButtonl") ; jButtonl. SddActionListener(new

Framel_jButtonl_actionAdapter(this));

ContentPane. setLayout(borderLayoutl); this. setSize(new Dimension(400, 300));

This. SetTitle (»Fraune Title") ; jTextAreal. setText("jTextAreal");

ContentPane. add(jButtonl, BorderLayout. WEST);

ContentPane. add(jTextAreal, BorderLayout-CENTER);

)

// Перекрыт, Чтобы Можно Было Выйти При Закрытии Окна Protected void processWindowEvent(HindowEvent Е)

{

Super. ProcessHindowEvent(Е);

If (e. getID() == HindowEvent. WINDOH_CLOSING)

{

System. exit(О);

}

J

Void jButtonl_actionPerformed(ActionEvent e)

{

String S = StringBox. reverse("Sam"); jTextAreal. setText(S);

)

)

Class Framel_jButtonl_actionAdapter implements j ava. awt. event. ActionListener

{

Framel adaptee;

Framel_jButtonl_actionAdapter (Framel adaptee)

{

This. adaptee = adaptee;

}

Public void actionPerformed(ActionEvent e)

{

Adaptee. jButtonl_actionPerformed(e);

}

примечаниеЗапустив этот проект, вы увидите, что он тестирует различные части классов па­кета codebox. Тем не менее, для наших целей важно научиться компилировать ис­пользуемые в проекте файлы исходного кода.

При попытке запуска проекта могут возникать ошибки, связанные с опе­ратором import com. elvenware. codebox.*. В этом случае вам придется в диалого­вом окне Project Properties внести изменения, показанные на рис. 27.1. Изменения, кото­рые необходимо внести, уже рассматривались в нескольких главах книги. Исходный код модулей пакета codebox, в частности файлы tringBox. java и MathBoxjava, входят в Состав сопровождающих книгу материалов.

Создание JAR-файла для CodeBox

Давайте рассмотрим процесс создания JAR-файла в среде JBuilder. Эта опция не доступна в редакции Personal, однако имеется в редакции SE. Если в вашей версии JBuilder эта опция отсутствует, не волнуйтесь, JAR-файлы можно создавать и в режи­ме командной строки. Фактически многие разработчики предпочитают создавать JAR-файлы именно из командной строки, поскольку процесс их создания можно автоматизировать с помощью сценариев.

Тема создания JAR-файлов будет рассматриваться и в следующей главе при об­суждении вопросов развертывания. В этой главе мы создадим небольшой JAR-файл, который будет содержать не весь проект, а только файлы пакета codebox. Для созда­ния JAR-файла необходимо выполнить следующие действия:

1. Выберите в меню Wizards ∣ Archive Builder (Мастера | Сборщик архивов).

2. В поле Archive type (Тип архива) выберите Basic (Базовый) и щелкните на кнопке Next.

3. На шаге 2 мастера введите имя архива CodeBoxSimpIe. Это имя, которое архив будет иметь в JBuilder, а не имя JAR-файла на жестком диске.

4. Нажмите кнопку эллипсиса рядом с текстовым полем File (Файл) и выберите каталог, в который необходимо поместить JAR-файл. Это может быть любой каталог на диске. При желании JAR-файл можно поместить в каталог проек­та. Кроме того, на диске можно создать специальный каталог, в котором будут храниться все глобальные Java-файлы и классы. Это, например, может быть каталог HomeUserNameClasses ИЛИ C:\Utile\Classes ИЛИ Любой другой каталог, на ваше усмотрение.

5. В открывшемся диалоговом окне введите имя выходного файла CodeBoxSimpIejar. После выполнения всех описанных выше действий окно шага 2 мастера должно выглядеть так, как показано на рис. 27.3. Если все сде­лано правильно, щелкните на кнопке Next.

6. На шаге 3 мастера выберите Include required classes and known resources (Включить требуемые классы и известные ресурсы). Щелкните на кнопке Add Classes (Добавить классы) и укажите корневой каталог пакета CodeBox (см. рис. 27.4). Корневой каталог будет иметь имя Сот, Как в пакете Com.Eivenwarβ.Codβboχ. Добавьте его в архив. Явным образом добавьте в ар­хив классы StringBox И MathBox, Как показано на рис. 27.5. Если вы не имее­те возможности выбрать перечисленные пакеты и файлы, значит, вы непра­вильно установили пути в своей системе. Вернитесь к рис. 27.1 и описанию способов решения проблемы. Щелкните на кнопке Next.

7. В созданном проекте нет зависимостей, поэтому шаг 4 можно пропустить, приняв все значения, предложенные по умолчанию.

8. На шаге 5 снова можно принять значения, предложенные по умолчанию, ос­тавляя установленным флажок Include a manifest in the archive (Включить мани­фест в архив) и переключатель Create a manifest (Создать манифест).

9. После выполнения всех перечисленных операций выполните щелчок правой кнопкой мыши на архиве в панели проекта, и в контекстном меню выберите пункт Маке. После этого возле имени архива появится знак плюс. Для откры­тия дерева щелкните на знаке плюс, а затем для открытия JAR файла выпол­ните двойной щелчок на имени файла. После этого содержимое JAR-файла должно отображаться в панели структуры. На рис. 27.6 показано, каким обра­зом это выглядит на экране. При изучении рисунка обратите внимание, что интегрированная среда разработки сжата максимальным образом, что позво­ляет сконцентрировать внимание только на существенных в данный момент деталях интерфейса. Если пакет ManagecodeBoxSixnple Или Timeit Не входит в архив, вернитесь к шагу 3 мастера и убедитесь, что вы точно следуете всем указаниям.

рис. 27.3. на шаге 2 сборщика архивов вводится имя архива для использования в среде jbuilder, а также имя выходного файла архива, который будет создан в результате выполнения всех действий

® seteci cteoses or packages tp archive x j

I t⅛ ¾ el⅜e∩ware В Ай Codebox

F <4 MateBox <⅛ StdngBox

⅛ ∙J⅜>l managecodebox & J⅜l timβlt

cancel j

Рис. 27.4. Выбор пакетов и файлов для помещения в архив

рис. 215. для пополнения содержимого jar- файла необходимо выбрать пакеты, которые должны быть включены, а также файлы классов, к которым пользователи должны получить доступ
archive content ∣ dependencies} mantfestj
; project classes and resources 
f {
j includerequiredclassesandknownresources
j c includerequtredclassesandallresources
i c always include all classes and resources
regulred classes, packages and resources:
,‘com* package [[^mdci'asses... ∣j
comelvenwarecodeboxmathbox class comelvenwarexodeboxstringbox class! addfhes... ∣
,<j√ jbuiider g√srcΛrcjava∕utfls∕coπe.., ⅛. ∣fθ∣∣,filt edl searc viev proje rur tear wtearc ɪool windo h
d <s ⅛ ’ si ■ β < > ~ ⅝ ⅞ x o⅛∙⅛,⅛φi,
3p managecod
jp managecodeboxjpr cb φ managecodebox
^ s 5°deθox
0 codeboxjar b q com
b-gj elvenware
b- 0 codebox 
,[mallibn-na-.',i . v stringboxciass
fe q meta-inf
s manifest.mf
’ й codebox i
√j sj⅛ stringbox
∙⅛⅛. mathbox gj ¼ managecodei
.∙iihi*∏ t⅛
managecode a framei (-j codebox
∣ ,ma..jno...∣54...
content
j history i
3uild succeeded build took o seconds.
рис. 27,6. просмотр содержания jar файла в ide-среде jbuilder

© Properties for ‘CodeBoxFoo’ ∣ X

Вы, возможно, обратили внимание на то, что JAR-файл содержит элемент, кото­рый называется манифестом (manifest). Манифесты будут рассмотрены непосред­ственно после раздела, рассказывающего о компиляции в режиме командной строки.

Компиляция файла CodeBoxSimpIeJar В режиме командной строки

В предыдущем разделе вы научились создавать JAR-файлы в интегрированной среде разработки. Для этого вам понадобится редакция SE или Enterprise. Если вы пользуетесь редакцией Personal, JAR-файлы придется создавать в режиме командной строки. В этом разделе будет показано, как выполнить эту достаточно простую задачу.

Перейдите в каталог CompiexProjects. Этот каталог будет корневым для подка­талогов Src И подкаталогов с файлами классов. Каталог Src Должен содержать фай­лы исходного кода пакета codebox:

/ComplexProjectsSrcComElvenwareCodeboxMathBox.Java

/ComplexProjects∕classes∕com∕elvenware∕codebox∕MathBox. class

Убедитесь, что в переменной среды path содержится каталог bin инструменталь­ного набора JDK:

Path=%path%;С:JbuilderJdkl.3.lBin

Если переменная среды Path Установлена правильно, вы должны иметь возмож­ность выполнить команду JavaVersion И при этом получить значащий ответ:

Cg:SrcjavaJbbookComplexprojects]java -version java version ”1.3.1"

Java(TM) 2 Runtime Environment, Standard Edition (buɪld 1.3.1-b24)

Java HotSpot(TM) ClientVM (build 1.3.1-b24, mixed mode)

Ниже приведены команды, которые можно выполнить из командной строки в каталоге ComplexProjectS Для компиляции файлов исходного кода и создания JAR-фаЙла, содержащего классы StringBox И MathBox:

Javac — d classes — Sourcepath src srcComElvenwareCodebox*.java mkdir classes

Jar cvf Codeboxsimple. jar -C classes com

Команда Javac Компилирует все файлы исходного кода из каталога Codeboχ И помещает их в каталог файлов классов. (Убедитесь, что каталог файлов классов су­ществует, для чего выполните команду Mkdir classes.) Третья команда создает ар­хив из компилированных файлов классов.

Первое слово в третьей строке вызывает утилиту Jar. Второе слово содержит три флага, передаваемые утилите Jar:

С: Создать JAR-файл;

■ V. выдавать расширенные результаты;

■ f: указывает имя создаваемого JAR-файла.

Ниже рассмотрены остальные части команды:

Codeboxsimple. Jar — имя создаваемого файла.

■ — с Classes Указывает утилите Jar Перейти в новый каталог с именем Classes. Эта команда имеет четко определенный синтаксис, если вы введете, например, -с Classes/, То команда выполнена не будет.

■ Последнее слово в команде указывает утилите jar поместить в архив содер­жимое каталога Сот.

При работе с JAR-файлом из командной строки его содержимое можно просмот­реть с помощью команды jar Tf Codeboxsimple. Jar. Опция T Указывает вывести на экран содержимое файла, а опция f говорит среде JBuilder, что после нее следует имя файла, содержание которого необходимо вывести. Результаты выполнения этой команды должны выглядеть следующим образом:

META-INF/

META-INF∕MANIFEST. MF Сот/

Com∕elvenware∕ com∕elvenware∕codebox∕ com∕elvenware∕codebox∕FileBox. class com∕elvenware∕codebox∕Finance. class com∕elvenware∕codebox∕MathBox. class com∕elvenware∕codebox∕StringBox. class

Обратите внимание на третью, четвертую и пятую строки, которые указывают на существование в JAR-файле трех важных пакетов. Кроме того, убедитесь, что в архив не был записан каталог файлов классов: Ciasses∕com∕elvenware.

Файл манифеста

При создании JAR-файла с помощью одного из описанных выше способов в него будет автоматически включен манифест. Манифест {manifest) представляет собой всего лишь текстовый файл, который описывает содержимое JAR-файла. Как прави­ло, манифест нужен для программ, которые используют JAR-файл, а не для разра­ботчиков, которые хотят больше узнать о файле.

В рассматриваемом нами простом JAR-файле манифест содержит только следую­щую строку текста: Manifest-Version: 1.0. Этот текст и сам манифест помещают­ся в файл автоматически, т. е. от вас не требуется никаких дополнительных дей­ствий.

Манифесты будут рассмотрены более подробно в главах 28 и 32 и в части VlI книги. На данном этапе вы не должны уделять особое внимание манифестам.

Таким образом, вы создали JAR-файл, который можно использовать в интегри­рованной среде разработки JBuilder. В следующем разделе я расскажу, как восполь­зоваться созданным файлом.

Тестирование JAR-файла

После создания JAR-файла его нужно протестировать. Для этого необходимо убедиться, что удалены все ссылки на файлы классов, помещенные в JAR-файл, т. е. доступ к классу StringBox.Class Должен осуществляться из JAR-файла, а не из ко­пии файла класса, хранящегося в вашей системе. Вначале следует убедиться, что проект не может найти пакет Com.Elvenware.Codebox.*.

Для этого проще всего удалить каталог Classes Проекта ManagecodeBoxSimple, А затем выбрать в меню Project ∣ Project Properties и убедиться, что каталог ComplexProject∕src в списке отсутствует (см. рис. 27.7). Сравните этот рисунок с ри­сунком 27.1. На рис. 27.1 каталог файлов исходного кода в списке присутствует.

рис. 27.7, убедитесь в отсутствии зависимостей в каталогах, в которых хранится stringboxjava qy project properties ' ×

Если вы все делали правильно, ваш проект компилироваться Не будет. В частно­сти, ВЫ Получите ошибку, указывающую на строку Import Com.Elvenware.Codebo×.* И говорящую о том, что JBuilder не может получить доступ к указанному каталогу.

Теперь необходимо создать библиотеку, которая будет указывать на JAR-файл. Процесс создания библиотеки будет описан в следуюшем разделе.

Установка пути классов: библиотечные файлы JBuiIder

Одной из ключевых концепций интегрированной среды разработки JBuilder яв­ляется библиотечный файл. Если для проекта JBuilder необходимо поместить опре­деленное значение в путь классов, используется библиотечный файл JBuiIder. Биб­лиотечные файлы представляют собой XML-файлы, имена которых заканчиваются расширением. library. Во всех версиях JBuilder они могут храниться в подкаталоге. jbuilder вашего домашнего каталога. (Если вы пользуетесь другой версией JBuilder, этот подкаталог может называться. jbuilder6 или. jbuilder8 и т. д.) Рас­ширенные версии позволяют хранить библиотечные файлы в других каталогах.

Как правило, пользователю JBuilder не нужно знать синтаксис библиотечного файла. Интегрированная среда разработки создает и управляет библиотечными файлами автоматически. Для их использования в среде JBuilder необходимо нажать всего несколько кнопок. Тем не менее, в этом разделе будет приведен синтаксис библиотечных файлов, отчасти для того, чтобы снять с них завесу тайны, а отчас­ти — дабы убедится, что вы четко понимаете, для чего вообще нужны эти файлы.

Обычный библиотечный файл выглядит следующим образом:

<?xml version="l.О" Encoding="UTF-8"?>

<library>

Файл Определения Библиотеки JBuilder —> <fullname>JavaHelp<∕fullname>

<classXpath>[G% ∕src∕srcjava∕classes∕jh. jar]<∕pathx∕class>

<∕Library>

примечаниеОсновной частью библиотечного файла является его раздел Class. Как видите, в нем приведен путь в JAR-файлу, который вы хотите включить в проект. Именно та­ким образом JBuilder определяет пути классов при работе в интегрированной среде разработки. Это одна из самых важных концепций, описанных в книге, — библио­течные файлы JBuilder используются как раз для установки путей классов!

Кодировка библиотечных файлов предполагает замену некоторых сим­волов. Так, например, символ двоеточия в пути заменяется символами %|. Таким обра­зом, путь G:∕src∕srcjava преобразуется к виду G%∣∕src∕srcjava. Должно быть, вы Знаете, что аналогичный тип кодировки используется в Cookie-наборах.

Большинство библиотечных файлов находится в вашем домашнем каталоге, в подкаталоге с именем . Jbuilder×, Где × — версия используемого JBuilder. Обратите внимание на точку перед словом Jbuiider×. В Операционной системе Linux, как правило, используется каталог HomeUserName∕. Jbuilder×, А в Windows — каталог C:\Documents And SettingsXUserName. Jbuilderx. В Редакциях SE И Enterprise библиотечные файлы могут храниться в структуре каталогов проекта.

Конфигурацию библиотечных файлов можно настроить двумя способами:

■ Выбрать в меню пункт Tools ∣ Configure Libraries (Сервис | Настроить библиотеки).

■ Выбрать в меню пункт Project ∣ Project Properties ∣ Paths (Проект | Свойства про­екта I Пути). В нижней части диалогового окна необходимо перейти на страницу Required Libraries (Обязательные библиотеки) и щелкнуть на кнопке Add.

Более подробно процесс настройки библиотек будет описан в следующем разделе. Использование JAR-файла в интегрированной среде разработки JBuiIder В этом разделе мы создадим библиотечный файл, который содержит ссылку на

JAR-файл. Для создания библиотечного файла в меню JBuilder выберите Tools | Configure Libraries. В появившемся диалоговом окне Configure Libraries щелкните на кнопке New. Назовите библиотеку CodeBoxSimpIe и в качестве места ее расположе­ния установите User Home (Домашний каталог). Снова щелкните на кнопке Add и найдите JAR-файл, который должен называться Codebo×Simpie. Jar. Он может быть расположен в каталоге C:\Utils\Classes Или в том каталоге, куда вы его по­местили. После этого мастер создания новой библиотеки (New Library Wizard) дол­жен выглядеть примерно так, как показано на рис. 27.8.

Если в мастере New Library Wizard щелкнуть на кнопке OK, произойдет возврат в диалоговое окно Configure Libraries. Теперь оно должно выглядеть так, как показано на рис. 27.9. На рис. 27.9 в домашнем каталоге, возможно, содержится больше биб­лиотек, чем находится в вашей системе, тем не менее, общий вид диалогового окна должен быть таким же.

На данном этапе настройка библиотеки CodeBox завершена, и библиотека гото­ва к использованию в одном или нескольких проектах. Для добавления библиотеки в проект в меню JBuilder выберите Project ∣ Project Properties. Перейдите на страницу Required Libraries и щелкните на кнопке Add. После этого библиотеку можно выб­рать в диалоговом окне, которое выглядит подобно элементу управления JTreeview, Который находится в левой части диалогового окна, показанного на рис. 27.9.

Как результат, библиотека CodeBoxSimple Появится в списке обязательных биб­лиотек (см. рис. 27.10). После того, как библиотека добавлена в проект, вы получите возможность откомпилировать и запустить проект. Если при выполнении одного из перечисленных шагов возникли какие-то проблемы, откройте проект, входящий в состав сопровождающих материалов, и сравните его со своим проектом.

Теперь вы получаете возможность запустить проект, и ошибка, касающаяся ката­лога Com.Elvenware.Codebox, Возникать не должна. Сейчас вы получаете доступ к классу StringBox Через JAR-файл, а не через файл класса, который содержится в си­стеме. Это может показаться незначительным достижением, тем не менее, оно оз­начает, что вы получили возможность использовать те многие JAR-файлов, которые можно найти в Internet.

Библиотеки, содержащие только файлы классов

Точно так же, как вы имеете возможность создать библиотеку, указывающую на JAR-файл, можно создать и библиотеку, которая указывает на пакет, содержащий набор файлов классов. Если такую библиотеку включить в проект, в него будет авто­матически включены и классы. Эта возможность может оказаться весьма полезной, если от независимого разработчика было получено один или несколько файлов классов без сопровождающего исходного кода.

New L∣brar> Wizard

dumiwqewxraiy
■яnot) enema end ioutton ibrtoe new itoriiy. ar∣d*ιwoneormorepetos egπmntog oesset1 sauna. srdocumantalkiltjbuttlerinlit autommlct⅜ dβlβnrttιa me correetpeto ⅛ws
nerrir jcodebdxslmdle
,j/ɪteeɑi рее! home,33
рис. 27.8. мастер new library wizard отображает библиотеку с именем codeboxsimple, которая находится в подкаталоге .jbuilderx домашнего каталога пользователя, и указывает файл codeboxsimplejar, расположенный в каталоге
g: ∖srcjava jbbook ∖comp iexprojects
lftrwygmie;
jfflgtsrcjevallbbookrcomplexproiectslcodeboxsimpieiai]

рис. 27.9. просмотр библиотеки codebox в диалоговом окне configure libraries ok i cancel i help

примечание

рис. 27.10. добавление библиотеки codeboxsimpte в разделе required libraries диалогового окна project properties

Несмотря на то что результаты могут варьироваться в зависимости от версии среды JBuiIderf как правило, файлы классов не помещаются непосредственно в проект. Например, они не помещаются в каталог classes, создаваемый по умолчанию JBuiIder. В некоторых версиях JBuiIder помещение файлов классов в каталог classes вызывает ошибку, а в других версиях JBuiIder сам автоматически удалит такие файлы. По­этому при получении файлов классов от независимых разработчиков я настоятельно ре­Комендую ссылаться на них через библиотечный файл.

Эта тема рассматривается только в конце главы, поскольку операцию подобного рода приходится выполнять достаточно редко. Тем не менее, бывают случаи, когда какой-то разработчик передает вам набор исходных файлов классов и просит включить их в проект. Конечно, файлы классов можно упаковать в JAR-файл. Но иногда такой подход будет неэффективным. В таком случае удобнее создать библиотечный файл.

Для создания библиотечного файла выполняйте все те же операции, которые вы предпринимали в предыдущем разделе. Но при выборе JAR-файла в мастере New Library Wizard вместо файла потребуется выбрать каталог, в котором находятся под­каталоги ∕com∕elvenware∕codebox.

Предположим, что дерево каталогов выглядит следующим образом: G:SrcSrcjavaClassesComElvenwareCodebox

В этом случае в библиотеку потребуется добавить каталог G:\src\srcjava\classes, Точно так же как в предыдущем примере вы добавляли в библиотеку файл Codeboxsimpie. Jar После вставки в файл каталога и перехода в свой домашний ка­талог можно обнаружить созданный файл. library. В приведенном примере файл библиотеки выглядит следующим образом:

<?xml version="1.O" encoding="UTF-8"?>

<library>

<!— Файл определений библиотеки JBuilder > <fullname>CodeBoxClasses<∕fullname>

<class>

<path>G%I∕src∕SrcJava∕jbbook∕classes<∕path>

<∕class>

<source>

<path>G%I∕src∕SrcJava∕jbbook∕ComplexProjects∕src<∕path>

<∕source>

<∕library>

Как видите, библиотека содержит и каталог классов, и каталог, в котором нахо­дятся файлы исходного кода. Для вставки в библиотеку этих каталогов понадоби­лось указать ссылку только на каталог Classes. Каталога Classes Будет достаточно для того, чтобы проект компилировался без ошибок, тем не менее, знание места расположения файлов исходного кода помогает при компоновке проекта. Конечно, если у вас нет файлов исходного кода, соответствующий раздел будет пустым. Вклю­чение каталога файлов исходного кода не является обязательным требованием, оно просто помогает при компоновке проекта.

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

Компиляция проекта Timelt В режиме командной строки

примечаниеВ заключение главы хотелось бы сказать несколько слов об использовании JAR — файла, созданного в компании Borland, во время компиляции в режиме командной строки без использования инструментальных средств JBuilder Этот раздел будет по­лезен только для тех разработчиков, которые пользуются редакциями SE или Enterprise.

Я не собираюсь рассказывать, как этот процесс выполняется в JBuiIder, поскольку среда JBuiIder автоматически добавляет в проект требуемые файлы библио­Тек, если в программе используются их функции.

При работе в интегрированной среде разработки JBuilder бывают ситуации, ког­да по ошибке в проект добавляются классы Borland. В частности, ситуация подоб­ного рода может возникнуть при работе с компоновками. Если в проект были слу­чайно добавлены классы Borland, их код всегда можно удалить из проекта. Но если вы хотите сохранить код и откомпилировать его из командной строки перед развер­тыванием проекта, вам понадобится материал, рассматриваемый в этой главе.

Как вы, наверное, помните, в главе 25 был создан проект Timeit, который без про­блем компилировался и запускался в интегрированной среде разработки JBuilder Эта программа демонстрировала принцип работы со сложными путями в среде JBuilder

Тем не менее, в ней присутствовала одна неприятная особенность. В частности, она использовала класс VerticalFiowLayout, Который не входит в стандартный JDK, поставляемый компанией Sun. VerticalFlowLayout Это класс, разработан­ный компанией Borland, который находится в JAR-файле, созданном и поддержи­ваемом компанией Borland. Таким образом, ссылка на класс VerticalFiowLayout

Компилируется в интегрированной среде JBuilder. Но что произойдет, если про­грамму Timeit запустить в режиме командной строки? Как уведомить Javac И Java О существовании JAR-файле разработки Borland?

В этом разделе будет рассмотрено, каким образом можно откомпилировать и за­пустить программу на машине, на которой уже установлен JBuilder. Описание про­цесса развертывания программы на другой машине будет приведен в следующей главе. Тем не менее, многие читатели после изучения процесса компиляции проек­та на машине, на которой выполняется разработка, наверное, поймут один из самых простых способов развертывания проектов на других машинах. Несмотря на это, ос­новное назначение настоящего раздела заключается в описании ситуации, когда при использовании JBuilder возникает необходимость перехода к использованию ко­мандной строки. (Как уже упоминалось, для автоматического перехода можно восполь­зоваться ключом JBuiider. exe — build, однако данная опция рассматриваться не бу­дет. Мы научимся компилировать проект с использованием самого комплекта JDK.)

Следующая строка, взятая из файла Framel. java, Может рассказать о рассматри­ваемой в этом разделе проблеме:

Import com. borland. jbcl. layout.*;

Очевидно, что файл Com. borland, Скорее всего, не будет распространяться вмес­те с Java SDK. Таким образом, может возникнуть вопрос: "Как откомпилировать та­кую программу в командной строке без использования средств Borland?". К этому времени вы уже можете самостоятельно, без особых усилий, найти ответ, тем не ме­нее, я предлагаю рассмотреть пример по следующим двум причинам.

■ Пример поможет акцентировать внимание на основных вопросах, рассмот­ренных в главе.

■ Некоторые разработчики в своих проекта используют классы Borland, и этот раздел вместе с главой 28 расскажет о необходимых операциях.

Несмотря на то что, строго говоря, это и не нужно для описания процесса ком­пиляции, тем не менее, в примере будет содержаться одна "изюминка". В частно­сти, будет рассмотрен один сценарий.

Ниже приведен фрагмент сценария, используемого мною:

#∙ /bin/bash

JBUILDER_HOME=$HOME/jb

JBUILDER_LIBS=$JBUILDER_HOME∕1Ib

JAVA_HOME=$JBUILDER_HOME/jdkl.3.1

Export JAVA_HOME JBUILDER_HOME JBUILDER_LIBS

Тот же сценарий для операционной системы Windows будет выглядеть следую­щим образом:

Set JBUILDER_HOME=d:Jb

Set JBUILDER_LIBS=% JBUILDER_HOME %1Ib

Set JAVA_HOME=%JBUILDER_HOME\jdkl.3.1

Как видите, приведенные сценарии устанавливают несколько переменных сре­ды, которые могут быть интересны для программистов на Java. В частности, обрати­те внимание, что в сценариях определяется переменная, указывающая на каталог lib. В каталоге Iib находятся JAR-файлы, которые могут представлять интерес. Так, в этом каталоге расположен файл jbcl. jar, который содержит классы, опреде­ляющие класс VerticalFlowLayout.

Bash-сценарий компиляции программы Timeit из командной строки выглядит следующим образом:

#! ∕bin∕bash

#————————————————————

# Перед запуском сценария определите переменную среды

# JBUILDER_LIBS. Она должна указывать на каталог JBuiIderX/Iib.

#

Java с — d classes — sourcepath src — classpath $JBUILDER_LIBS/jbcl. jar ∖

Src/timeit/Timelt. java

Java — classpath.:classes:$JBUILDER_LIBS/jbcl. jar timeit. TimeIt

Тот же самый сценарий для Windows выглядит вот так:

Rem ————————————————————

Rem Перед запуском сценария определите переменную среды

Rem JBUILDER_LIBS. Она должна указывать на каталог JBuilderX∕lib.

Rem ————————————————————

Javac — d classes — sourcepath src -classpath %JBUILDER__LIBS%/jbcl. jar ∖

Src/timeit/Timelt. java

Java — classpath./classes;%JBUILDER_LIBS%/jbcl. jar timeit. TimeIt

Эти сценарии аналогичны сценариям, приведенным в главах 23 и 24. Тем не ме­нее, обратите внимание, что они явным образом помещают файл jbcl. Jar В путь классов. После указания пути к файлу jbcl. Jar Машина Java сможет найти файлы классов, определяющие класс VerticalFiowLayout. Зная расположение файлов классов, Java сможет компилировать и запустить программу Timeit.

Резюме

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

Конечно, отдельные вопросы, рассмотренные в этой главе, могут оказаться дос­таточно сложными для понимания. Тем не менее, как только вы научитесь работать с JAR-файлами, вы обнаружите, что приобретенные знания окажут неоценимую по­мощь при разработке проектов. В частности, JAR-файлы предоставляют великолеп­ное средство для инкапсуляции частей проектов в отдельные удобные для исполь­зования "пакеты" кода. Они позволяют достичь двух основных целей, к которым стремится любой профессиональный программист:

■ Максимальное повторное использование кода.

■ Инкапсуляция кода в "пакеты", называемые JAR-файлами, которые легко ис­пользовать и сопровождать.

марджи и чарли калверт

Глава 28

®>Я|ЯИИвИИИИИИИИИИИЯИИИИНВИЯИВ! ЯИИИИИИ1^ИВвЫвИР*ввИЯ1ИИвИвИИМИИИИИИИвв1ИвИИИИЯИИИОвИИ1вЯИИИИ1ИИИЯЮвв^в1

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *