Структура элементарного проекта JBuiIder

В

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

Данная глава короткая, а материал, изложенный в ней, не особенно сложен. Но все же знание структуры проектов JBuilder необходимо для понимания самого JBuilder. Эта тема может оказаться трудной для новичков в JBuilder или в Java. По­этому я честно постараюсь изложить эту тему ясно и четко. В следующей главе вы узнаете, как на основе этой элементарной структуры создавать сложные проекты JBuiIder.

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

В конце этой главы приведено несколько коротких советов и приемов для работы с ключевыми частями IDE JBuilder. Охвачены следующие темы:

■ Выключение звуковых эффектов.

■ Переключение между аплетом и приложением.

■ Указание JBuilder главного файла проекта.

■ Переключение JDK.

Элементарные проекты JBuiIder

Я начну с определения, на что похож элементарный проект JBuilder. Большин­ство проектов в данной книге начинаются с проектов элементарного формата, по­этому понимание его структуры достаточно важно.

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

Создание элементарного приложения

Чтобы создать с помошью JBuilder элементарный проект, необходимо восполь­зоваться набором несложных в работе мастеров. Этот процесс уже был описан в гла­ве 3. Так что если вы забыли, как создать элементарное приложение, перечитайте эту главу. Рисунки 24.1 и 24.2 иллюстрируют основные шаги процесса создания приложения.

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

рис. 24.1. изменение имени проекта с untitledx, предложенного по умолчанию, на myproject на первой странице мастера создания проекта и) project vΛ23rd - step i of 3,^reettry jf⅛7cjavaΛempΛ(ypro∣βct tetnjjw i(defsiunprolecl)
г seiierwpfojeefnotm se
, i ¾⅛⅝> }, j⅝gι 1 чяе» ∣ <e⅝ i

рис. 24.2. изменение имени главного класса с applicationl на myapplication на первой странице мастера создания приложенияapμhcdtιαπ wtrard srep 1 of z

ftfttat⅛W*i⅛⅛ (Iemfc)Witidyeiefifteane create anew Java sw>Hcasop Γne appt∙ee∙o∏ writ consist of a r∏atn duplication rfass

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

Далее в этой книге, в главе 31, вы узнаете, как в своем проекте автоматически из­менить имя пакета или класса. Корректировка связей изменяет не только имя отдель­ного каталога или класса, но и все ссылки на этот класс или пакет во всем проекте.

Как найти свои файлы на жестком диске

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

Пути файлов по умолчанию

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

Далее я предполагаю, что вы создаете проект с названием MyProject, который находится в пакете myproject.

Ваш исходный код по умолчанию находится в каталоге

../MyProjβct∕src∕myproject

В типовом приложении JBuilder в этом каталоге находятся два файла. Первый файл по умолчанию называется Applicationl. java, а второй — Framel. java. В этой главе мы не будем обсуждать содержимое упомянутых файлов. Достаточно знать, что файл Appiicationi содержит заготовку кода вашего приложения, а Framel является контейнером компонентов пользовательского интерфейса. Напри­мер, Framel может содержать кнопки, списки выбора, меню и другие средства об­щения с пользователем.

В элементарном проекте JBuilder скомпилированные файлы классов находятся в каталоге

../MyProject∕classes∕myproject

Ясно, что в результате компиляции элементарного проекта в каталог classes/ myρroject будут помещены два файла: Applicationl. class И Framel. class. По мере роста сложности проекта в этот каталог будут дописываться другие файлы.

JBuilder также создает каталог../MyProject∕bak, предназначенный для хране­ния резервные копий исходных файлов. Вы можете увидеть эти файлы в окне History, находящемся среди закладок просмотра файла под панелью содержимого. В част­ности, обратите внимание на страницу Diff в окне History. C помощью этой страни­цы вы можете увидеть отличия различных версий текущего файла. Обычно есть еще каталог doc, который можно использовать для хранения Javadoc-файлов. Эти файлы рассматривались в главе 21.

Изменение расположения проекта по умолчанию

В системе на базе Windows JBuilder сохраняет файлы проекта в неудобном и, на мой взгляд, неудачном каталоге Dociunents and Settings. Здесь он просто следует нелогичным рекомендациям Председателя Билла. Но, конечно, следование совету Microsoft и использование каталога Documents and Settings И принципиально, H практически является плохим правилом. В частности, Java не всегда хорошо работа^ ет с длинными именами, содержащими пробелы.

примечаниеКоманда разработчиков JBuiIder В этом случае, имела небогатый вы­бор. По умолчанию Java Знает лишь несколько системных каталогой^Один из них — личный каталог пользователя, который по умолчанию находится в Documents and Settings. Вина здесь Лежит на компании Microsoft, Которой не следовало создавать такое неуклюжее имя.

Поскольку каталог Documents and Settings Содержит в своем имени пробелы, то вам, возможно, не захочется иметь дело со значениями по умолчанию, приняты­ми в JBuilder. Вместо этого вы можете создать свой собственный каталог для хране­ния проектов. Конечно, вы выберете такой путь к этому каталогу, в котором не будет пробелов.

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

Вы можете изменить расположение своих проектов по умолчанию, выбрав пункт меню Project ∣ Default Project Properties. Перейдите на страницу Paths, которая долж­на быть выбрана автоматически. Измените значения в полях ввода на странице Paths в соответствии со своими предпочтениями, как показано на рис. 24 3.

Рис. 24.3. Правильно заполненная страница Paths Диалога Default Project Properties. Здесь я решил сохранять свои проекты в каталоге с именем AllUntitleds

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

В диалоге Default Project Properties, показанном выше, вы на самом деле задаете Шаблон для создаваемых каталогов, а не сами каталоги. Обратите внимание, что я за­дал каталог для классов G:/SrcJava/AllUntitleds/classes. Это не значит, что вы указываете JBuilder сохранять все файлы в каталоге G∙.∕SrcJava∕AllUntitleds∕ classes. Это просто шаблон, согласно которому JBuilder должен создавать новый каталог для ваших проектов. А именно, вы указываете JBuilder, что при создании нового проекта он должен быть помещен в каталог G: ∕SrcJava∕Aiιu∏titleds∕ untitiedi∕dasses. Например, если вы с помощью мастера создания проекта со­здаете новый проект, то теперь он должен по умолчанию иметь значения, приве­денные на рис. 24.4

Обратите внимание на наличие слова MyProject, являющегося именем вашего проекта. Так что суть шаблона состоит в том, чтобы взять каталог, который вы указа­ли каталогом классов по умолчанию (в нашем случае AIIUntitIeds), и добавить к нему имя вашего проекта, вроде untitled 1 или MyProjecL Первая из нижеприведенных строк содержит заданный вами шаблон, а в следующих двух строках приведены при­меры реальных каталогов проектов, основанных на этом шаблоне:

G:∕SrcJava∕AllUntitleds∕classes

G:∕SrcJava∕AllUntitleds∕untitledl∕classes

G:/SrcJava∕AllUntitleds/MyProject∕classes

Я всегда считал страницу Paths диалога Default Project Properties несколько стран­ной. Поэтому, возможно, будет лучше, если я выражу сказанное ранее в несколько другой форме. На рис. 24.3 я не предлагаю JBuilder помещать файлы в каталог E:\SrcJava\Aliuntitleds\src. Вместо этого я указываю JBuilder помещать их в E:\SrcJava\AllUntitleds\MyProject\src\myproject, Где MyProject — ИМЯ Со­здаваемого каталога. Он может называться, например, Unt±tledi Или как-нибудь по-другому. Затем JBuilder создает каталог Src, А внутри него — пакет Myproject, Используемый проектом.

@ (tf>jcct piopcities ,<i
ιpβttι oenereljrun debug) buiw∣ codestyie importstyie editor! umlj server» j
jdk jjava 1.40-b92 "... i
outputpeth jojsrcjavataliuntitledslmyprojecvciasses ■ *** j
backup path jojsicjavamliurititiedbtmyprojecvbak .? 1
vyoimngairectory: ,ɔ 'cjavatΛ"1 ""eostmyp о bd ^^∠j
source documentattonl requlredlibrailesj 
 default test pam i add.. i
 if Γ ojsrcjavataliuntitledbtmyprojecvsrc ——- — 
 r it ojsrcjavamlluntitiedstmyprojettttest ⅜⅜ i
 j⅝ibqsj? i
 
 ''⅜⅜ ⅜^l^∙√ j
 roset Γ j ok j cancel i help i
∣∏. ....... ^∣h√Γ∣∣∣1 , ,
рис. 24.4. так выглядит вторая страница мастера создания нового проекта после задания значений по умолчанию, приведенных на рис. 24.3

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

G:\SrcJava\AllUntitleds\src

G:\SrcJava\AllUntitleds\MyProject\src\myproject

И во что происходит при задании каталога для файлов классов по умолчанию:

G:SrcJavaAllUntitledsClasses

G:SrСJavaA1IUntitledsXMyProjectClassesMyproject

примечаниеКак видите, связь довольно очевидна. Сначала вы задаете имя подкаталога, в ко­тором вы хотите разместить свои исходные файлы или файлы классов. Файлы с рас­ширением .java Попадут в каталог Src, А с расширением .class В каталог Classes. Когда дело дойдет до непосредственного создания проекта, JBuilder сна­чала вставляет имя каталога вашего проекта, потом имя заданного вами каталога, и затем имя по умолчанию для пакета вашего проекта. Исходные файлы, наподобие Appiicationi. java И Framei. java, Будут размещаться в этом последнем каталоге.

Конечно, вы можете дать каталогам типа Src И Classes И другие име­На. Например, если хотите, можете назвать их, скажем, Source И Output.

примечаниеВам надо просто уяснить, что в этом диалоге JBuilder предлагает задать не конк­ретные имена каталогов, а шаблон, который будет использован в ваших проектах. Каталоги G:\SrcJava\AllUntitleds\classes И G:\SrcJava\AllUntitleds\src, приведенные на рис. 24.3, не являются реальными каталогами. Это скорее подсказ­ки, согласно которым JBuilder будет создавать ваши проекты. В частности, каталог E:\SrcJava\AllUntitleds является корневым каталогом по умолчанию для моих временных проектов. Часть формулы ’’classes" просто указывает каталог, который должен быть добавлен к пути G:\SrcJava\AllUntitleds\MyProject, когда необхо­димо задать путь к вашим файлам классов.

При всем моем желании я не могу сказать, что команда разработчиков JBuiIder Сделала правильный выбор при создании страницы Paths Диалога Default Project Properties. Но как только вы поймете их замысел, вы сможете легко использо­вать этот диалог.

Раз уж речь пошла о вещах, трудных для понимания, наверное, стоит пояснить, почему я задал в качестве каталога по умолчанию для своих файлов каталог AllUntitled. Я ни­когда не помещаю свои реальные проекты, которые предполагаю долго хранить, в ка­талог AllUntitled1 Вместо этого я использую подкаталоги каталога G:\srcjava\. А в каталоге AllUntitled Я храню свои проекты Untitledx, Являющиеся мелкими экспе­риментами или проверками каких-либо идей. Я создаю много таких файлов. Затем, ког­да у меня получается что-нибудь нужное, я перемещаю соответствующий код из катало­Га AllUntitled В более подходящее место.

При создании проекта JBuilder вам необязательно помещать свои файлы в ката­лог по умолчанию, заданный в диалоге Default Project Properties. Вернитесь на не­сколько страниц назад и взгляните на поле Directory на рис. 24.1. Вы можете исполь­
зовать это поле для того, чтобы поместить корневой каталог своего проекта в любое место жесткого диска. JBuiIder разберется, что вы от него хотите.

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

Примечания по поводу проектов

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

Теперь вы должны иметь четкое представление о том, как JBuilder оформляет элементарный проект, и как вы можете задать место, в котором этот проект будет находиться. Вы можете изменить эту структуру как вам угодно. Но вы должны по­мнить, что в этой книге я обращаю внимание не на каталог по умолчанию для ваше­го проекта, а на структуру проекта. Например, мне все равно, храните ли вы свои проекты в Documents and Settings, E:\srcjava Или где-нибудь еще. В основном я уделяю внимание созданию проектов, использующих каталоги Classes И Src, Со­зданные в элементарном проекте JBuilder.

Файлы JPX и JPR

примечаниеНаиболее темными местами в JBuilder являются JPR — и JPX-файлы, которые он применяет для управления проектами. Вообще-то эти файлы не такие уж непонят­ные. Это обычные текстовые файлы. Но в них чувствуется какая-то опасность, по­этому стоит потратить некоторое время на более близкое знакомство с ними.

Как вы узнали в предыдущей главе, все версии JBuiIder Дают вам воз­можность выбора между JPR — И JPX-файлам и. В нескольких следующих абзацах для простоты я буду говорить о них обоих как о JPR-файлах, просто потому что сокращение JPR Соответствует словам JBuiIder Project (проект JBuiIder) И поэтому легко запоминается и понимается. Но все же помните, что, возможно, JPX-файлы, основанные на легком для просмотра и понимания синтаксисе XML, Для многих разработчиков будут лучшим выбо­ром.

Хотя JPR-файлы тесно интегрированы в IDE, Все же они играют в проектах JBuiIder При­мерно такую же роль, что и Make-файлы в проектах C++. Вы даже можете ском­пилировать JPR-файл в командной строке, введя команду Jbuilder -build MyProject. jpr. Мне не знакомы инструменты, переводящие JPR-файл в Make-файл или в пакетный файл. Хотя есть инструменты независимых разработчиков, которые для Проектов JBuiIder Автоматически создают файлы Ant.

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

В листинге 24.1 приведен полный JPR-файл для проекта, созданного с использо­ванием диалогов, показанных на рисунках 24.1 и 24.2.

Листинг 24.1. Простой файл проекта JBuiIder

,-JBuilder PROJECT FILE VERSION {2.00} Do not alter this line!

#0=MyProject. jpr

⅛l=srcMyprojectFramel. java

#2=src\myprojectMyApplication. java

Runtime. O[0].RunnableType=Com. borland. jbuilder. runtime. ApplicationRunner runtime. O[0].application. class=myproject. MyApplication sys[O].AuthorLabel=Sauthor

Sys[O].BackupPath=bak

Sys[O].Beanslnstantiate=false

Sys[O].BraceStyle=I

Sys[O].CheckStable=I

Sys[O].Company=Elvenware

Sys[O].CompanyLabel=Company:

Sys[O].Copyright=Copyright (c) 2001

Sys[0].CopyrightLabel=Copyright:

Sys[O].DefaultPath=Src

Sys[O].Description=

Sys[0].DescriptionLabel=Description:

Sys[O].DocPath=doc

Sys[O].EventMatch=false

Sys[O].EventStyle=O

Sys[O].ExcludeClassEnabled=O

Sys[O].IncludeTestPath=I

Sys[O].InstanceVisibility=O

Sys[0].JDK=java 1.3.l-b24

Sys[O].LastTag=2

Sys[O].Libraries=

Sys[O].MakeStable=O

Sys[O].OutPath=Classes

Sys[O].SourcePath=Src

Sys[O].TestPath=src

Sys[0].Title=

Sys[O].TitleLabel=Title:

Sys[0].Version=I. O

Sys[O].VersionLabel=Sversion

Sys[O].WorkingDirectory=.

Sys[l].Parent=O

Sys[2].Parent=O

Первое, и самое очевидное, что можно заметить в файле проекта — это то, что он является текстовым, а не бинарным файлом. Если все нормально, то у вас не долж­но возникать необходимости вручную редактировать JPR-файл. Но если вы захотите изменить его, для этого нет никаких препятствий.

Обычно вы можете изменять содержимое JPR-файла с помощью средств JBuilder. Но все же иногда оказывается легче открыть файл в текстовом редакторе и с помо­щью контекстной замены изменить его код. Это может оказаться полезным, если вы

Переименовываете файл или пакет, на который имеются ссылки во многих местах J PR-файла.

Большая часть строк JPR-файла вполне ясна. Например, следующие строки ука­зывают JBuilder, какие файлы являются частями самого проекта:

#0=MyProject. jpr

#l=src\myprojectFramel. java #2=src\myprojectMyApplication. java

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

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

ewenlhahclhnaг anonymous adapter
, . „-,.
<f standard adapter
example: fclavs Γoo <
:' pxivatte void jbɪnit:() <
addlisr en<r (пеж> adapt;ex (`bkis ) ) ;
code p
: class a dap ее x <
Рассматривая листинг JPR-файла далее, вы можете увидеть, что он содержит ин­формацию, добавленную в начало ваших файлов, если при создании нового класса вы указали добавить Заглавные комментарии. Другие части отображают стили офор­мления фигурных скобок и событий, которые вы можете изменить, выбрав пункт меню Project ∣ Project Properties ∣ Code Style, как показано на рис. 24.5.

"3Рис. 24.5. Решения, принимаемые вами на странице Code Style Диалога Project Properties, Запоминаются в JPR-файле

Vlsrullity of InstancB variables ∙nackage Γ Use Beans instantiate! j

resetOK I Cancel; j Helpi

Узнать, как некоторые элементы диалога Code Style транслируются в J PR-код, до­вольно легко:

Sys[0].BraceStyle=I sys[0].EventMatch=false sys[0].BeansInstantiate=false sys[0].EventStyle=O

Поймите, что я не предлагаю вам изменять такого рода свойства непосредствен­но в JPR-файле. Это гораздо легче сделать с помощью диалогов JBuilder. Я просто хочу, чтобы вы не боялись и не считали загадочной такую простую вещь, как JPR — файл.

Код JPX-файлов обычно представляет собой лишь простую трансляцию JPR — файла в синтаксис XML, Например, вот строки, задающие каталоги с исходными файлами и файлами классов:

<proρerty category="sys" name="OutPath" value="classes"∕>

<property category="sys" name="SourcePath" value="src;test"∕>

А вот тот же код в JPR-файле:

Sys[0].OutPath=Classes sys[0].SourcePath=Src;test

По сути дела, они эквивалентны. Как обычно, XML-код несколько более разве­сист, но у него есть преимущество: он использует хорошо определенный и очень гибкий стандарт.

И в заключение я хочу подчеркнуть два момента:

■ В общем случае вы не должны лишком задумываться над JPR-файлами, пока с вашим проектом что-нибудь не случится, а случаться это будет крайне редко. Но если такое все же случится, это может стать серьезной проблемой. И тогда вы поймете, как хорошо хоть немного разбираться в J PR-файлах.

■ JPR-файлы хранятся в текстовом формате. Это значит, что вы можете контро­лировать изменение их содержимого с помощью инструментов наподобие CVS. Если вы хотите работать с этим файлом совместно с другим разработчи­ками с помощью таких средств, избегайте ручного задания конкретных путей в своих файлах проекта. Всегда работайте с относительными путями. JBuilder всегда старается поместить в ваши JPR/JPX-файлы относительные пути. Вам не стоит заставлять его поступать по-другому.

Компиляция элементарных проектов из командной строки

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

При нормальной разработке у вас не должно быть необходимости компилиро­вать πpor кты из командной строки. Ведь вы можете легко компилировать, запускать

примечаниеИ отлаживать свои приложения, не покидая IDE-среду. Но некоторые задачи вы мо­жете автоматизировать из командной строки таким образом, какой может быть не доступен в IDE. Так что знакомство с работой из командной строки важно и потому что это может быть очень удобно, и потому что нас будет согревать мысль, что мы не привязаны к GUI.

При обсуждении компиляции из командной строки я буду рассказывать о такой компиляции, которая может понадобиться при распространении вашего проекта. После того как вы закончите проект, вам нужно будет как-то упаковать его, обычно в JAR — файл. Создание JAR-файлов и выполнение проектов, упакованных в JAR-файлы, являются Отдельными темами и рассматриваются в главах 27, 37 и 43.

Как обычно, проще всего ввести команду JbuilderBuild MyProject. Jpr. За­тем запустите приложение с помощью стандартного Java-oπepaτopa или оператора браузера аплетов, как рассказано ниже.

Многие программисты желают знать, как собрать приложение, не пользуясь средствами JBuilder. Вот пакетный файл, который вы можете модифицировать для компиляции и запуска элементарного приложения из командной строки:

Javac — d classes — sourcepath src srcUntitled6Applicationl. java java -classpath classes;, untitled6.Applicationl

B операторе Javac Присутствует ключ — d, указывающий компилятору, что сгене­рированные файлы необходимо поместить в каталог Classes. Поскольку проект на­ходится в пакете UTitled6, То реальный каталог, в который будут помещены файлы классов, выгладит как ClassesUntitled6. Директива Sourcepath Указывает, что­бы утилита Javac Выбирала все необходимые исходные файлы из каталога Src/ Untitled6. Это необходимо, т. к. стандартное Java-приложение использует два фай­ла: Applicationl. Java И Framel. Java, Javac Не будет знать, где найти файл Framel. Java, Если вы явно не укажете путь к нему с помощью ключа Sourcepath. И в конце команды явно указан главный файл приложения:

SrcUntitled6Applicationl.Java

Вызов утилиты Java Содержит ключ Classpath, Указывающий JVM, что наш пакет должен быть выбран из каталога Classes. Хотя в данном случае это и не явля­ется обязательным, я указал, что необходим просмотр и текущего каталога — доба­вив точку с запятой и точку. В простом проекте этот шаг не обязателен, но при со­здании более сложных проектов лучше ввести его в привычку. И, наконец, вы указываете имя пакета, а за ним имя файла главного класса проекта: untitled6.Applicationl. Новичкам в Java надо запомнить, что при указании фай­ла главного класса не нужно добавлять расширение .Class. Java очень невежливо выплевывает команды наподобие

Java — classpath classes untitled6.Applicationl. class

Вот пакетный файл, который вы можете изменить для компиляции любого эле­ментарного аплета из командной строки:

Javac — d classes src∕minesweeper∕*.java appletviewer classes∕MineSweeper. html

И, наконец, некоторые программисты желают компилировать свои JBuilder-πpo — екты из build-файла Jakarta Ant. Вот пример применяемого в таких случаях кода:

<target name="init,,>

<!— Создание отметки времени —>

<tstamρ∕>

<•— Установка глобальных параметров данного пакета —>

<property name= "src" value="src"∕>

<property name=,,build" value=,,classes"∕>

<!— Создание структуры каталогов, используемых при компиляции —> <mkdir dir="${build}"/>

<∕target>

<target name="compile" depends=,,init">

<!— Компиляция Java-кода из ${src} в $ {build} —>

<javac srcdir="${src}" destdir="${build}"∕>

</target>

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

Вопросы конфигурации

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

Как сохранить файл?

Для сохранения файла нажмите Ctrl+S, а для сохранения проекта — Ctrl+Shift+A. Если у вас есть работы в Delphi или C++Builder, то вы, видимо, привыкли пользо­ваться сочетанием Alt+F, а затем S. В JBuilder это не работает. Лучше просто при­выкнуть использовать для сохранения сочетание клавиш Ctrl+S.

JBuiIder и переводы строки

Одна из распространенных проблем при работе с Java-приложениями заключа­ется в работе с символами, помещаемыми в конце строки. В мире UNIX строки обычно заканчиваются символом \п С кодом 13. В мире Мае перевод строки обозна­чается символом \г с кодом 10. В мире Windows это RN.

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

По умолчанию JBuilder просто продолжает применять тот тип перевода строки, который уже использован в открытом текущем файле. Но вы можете явно задать тип окончания строк в стиле Windows, UNIX или Mac, выбрав пункт меню Project | Default Project Properties ∣ Editor.

примечаниеКак ни странно, вопрос окончания строк может сильно подпортить вам нервы. Не обвиняйте сам JBuiIder в том, что в файле вдруг окажутся смешанными раз­личные типы окончания строк. Если у вас возникли проблемы, то вряд ли это по вине JBuiIder. Лучше тщательно проверьте, не вытекает ли эта проблема из вашей системы контроля вер­сий. В частности, моя любимая система контроля версий CVS при работе в Windows дописы­вает в конец файлов ∖r∖n, если вы явно не укажете ей прекратить подобное безобразие. Другие системы контроля версий могут вызывать аналогичные проблемы.

Как отключить звуковые эффекты?

По умолчанию IDE JBuilder может оказаться в определенной степени шумной. Выберите пункт меню Tools ∣ IDE Options и перейдите на страницу Audio. Отмените те звуковые эффекты, которые вы не считаете нужными.

Как указать JBuiIder главный файл проекта?

Если в вашем приложении имеется несколько исходных файлов, содержащих оператор main, вы можете выбрать один из них с помощью диалогового окна Runtime Properties, доступного через меню Project ∣ Project Properties ∣ Run. Эта тема уже рассматривалась в предыдущей главе.

Другое решение — щелкнуть правой кнопкой мыши в панели структуры на тре­буемом файле и выбрать в контекстном меню пункт Run. Если вы щелкнули правой кнопкой мыши на файле, а в появившемся всплывающем меню пункт Run отсут­ствует, значит, файл, на котором вы щелкнули, не содержит главного метода, не яв­ляется главным файлом аплета или JApplet И не является HTML-файлом, содержа­щим дескриптор <applet>. Три только что приведенных варианта — это основные типы файлов, которые могут быть выполнены из IDE-среды JBuilder.

Гибриды аплета и приложения

Элементарный аплет, созданный JBuilder, может быть запущен либо как прило­жение, либо как аплет. Для выбора одного из этих вариантов:

■ Выберите пункт меню Project ∣ Project Properties.

■ В диалоговом окне Project Properties перейдите на страницу Run и выберите либо страницу Application (Приложение), либо страницу Applet (Аплет). Это определит, как будет ваша программа запускаться из IDE — как приложение или как аплет.

■ Проверьте, задали ли вы главный класс проекта с помощью соответствующего поля либо в проекте приложения, либо в проекте аплета Для этого щелкните на кнопке эллипсиса в правом верхнем углу страницы Application или Applet. Теперь вы сможете найти исходный Java-файл своего проекта, содержащий либо класс JApplet, Либо главный метод. По умолчанию это файл Appletl. java ИЛИ Applicationl. java.

Если аплет содержит метод с именем main, он может выполняться и как прило­жение, и как аплет. Вы можете включить или выключить это свойство с помощью флажка Can run standalone (Может выполняться автономно) на первой странице мас­тера создания аплета.

487

На рисунках 24 6 и 24.7 приведены примеры того, что делать, если нужно задать приложение или аплет главным классом при запуске приложения из IDE JBuilder.

Здесь необходимо уяснить, что JBuilder попытается выполнить файл как прило­жение, если вы в диалоге выделите страницу Application, и он попытается выполнить файл как аплет, если вы в диалоге выделите страницу Applet. Внимательно посмот­рите на рисунки 24.6 и 24.7, и вы увидите, что в одном случае выбрана страница Application диалога Run, а в другом случае — страница Applet.

примечание∣∣∣B∣∣∣∣i-B∣auM0 Вы можете указать также HTML-файл, который содержит дескриптор <applet>, задающий главный класс аплета. Для этого выберите переключатель HTML File, показанный на рис. 24.7. В поле редактирования рядом с этим переключателем вве­дите или найдите имя HTML-файла для своего аплета. Тогда при щелчке на кнопке Run JBuiIder Запустит ваш аплет из HTML-файла, а не из браузера аплетов.

Попереключаем JDK?

В JBuilder можно работать с различными JDK. Хотя в большинстве случаев вы можете пользоваться JDK, поставляемым вместе с продуктом и установленным по умолчанию

Если у вас продукт редакции SE или Enterprise, выберите пункт меню Project | Project Properties. На странице Paths щелкните на кнопке эллипсиса рядом с полем JDK. Появится диалог, с помощью которого вы сможете сделать выбор из одного или нескольких JDK. Этот JDK будет использоваться вашими программами при запуске их в IDE-среде JBuilder.

Nimhme Propertie*

',' k untfme propertsesрис. 24.6. в диалоге runtime properties мсжно зсдать выполнение либо аплета, либо приложения. здесь задано вь полнение приложенияIgcnflguraBOt wτw Untltled Runtime Configuration RWtj

*ppt∙cauon z ApOlat ∣ Server] Teβt∣

<r MalNtlassj jur⅛e∏20 Appteti ( HTMt nte ~

Ум paeirnelen

Widtn Доо

Арр. Ietoaraneters

ok i
reeet help
buildtaroet (ма!

Рис. 24.7. На этой странице JBuilder Переключен на выполнение аплета. Обратите внимание, что вы можете запустить аплет из браузера аплетов JBuiIder Или выбрать использование HTML-файла

488

Если щелкнуть на кнопке New, вы сможете указать каталог, в который инсталли­ровали JDK (см. рис. 24.8). Просматривать следует не каталог bin, а корневой ката­лог, в котором был установлен JDK.

На рис. 24.8 приведен пример использования очень старого JDK. Когда я писал эту книгу, я в основном пользовался бета-версией, а позже и окончательной версией JDK 1.4. JBuilder поставляется с JDK 1.3.1, но я все время говорил о JDK 1.4.1, как о последней и наилучшей на это время версии.

Если у вас редакция Personal, то изменить JDK можно с помощью меню Tools. Выбе­рите пункт меню Tools ∣ Configure JDKs (Конфигурировать JDK). На рис. 24.9 показан диалог Configure JDKs. Для выбора требуемого JDK щелкните на кнопке Change.

Резюме

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

ct jlcw jdk vztaiid setectahameimthrorajdk
seitfiejdk home path below to a particular jdks home directory; for example c :ljdkl .2.2. then select a location to store ihe library specification for this jdk
existing jdkhomepath:
jgfcompuersjjdki 'l .β^ ~ j
nameforthisjdk
,jjava 11 0 oo6
..oration to store new jpk specification
juser home
,рис. 24.8. теперь jbuilderможет быть запущен с ужасно древним jdk, созданным в то время, когда земная кора еще не полностью остыла,mdfblder,1 l⅛!5⅜* jl,n6me. ∣∣sr. t 4.04л2
g /-⅜sx⅞. - -
дж home ear- ∣cΛ,wgrafh fiieeajivsipfeiatj i г afways debugwttfi-classic
, ɪ.
i project _j user home
c⅛iww⅝ws⅞w h
¾" 1 jbuiider .
i:
1
 i
crass.
[cfprogram filesajava∣!2re1 cofiibjrtjafl [czjprogram f∣iesajavajj2re1 4.0jllbj)awsjar]
[cfprogram filesajavarpreiaqfiibjcharsetsjar] [cfprogram filesajavajprel cofilbfexlfiocaledalajafl [cfprogram fιleβajavaj(2re1 4. ofilbjexvdnsnsjat] [cfprogram fileεjjavaj]2ret aofllbjexijidapsecjafl [cfprogram filesjjavaj]2re1.4 ofiibjexvsunicejroviderjar] [cfprogram filesjjavarprei .4 ofiibjjce jar]
[cfprogram fllesajavaipreiaqfiibflssejai]
[czjprogram filesajavajprei aqfiibjsunrsasignjar] ofutilitiesjibuiiderjjdki .3.1
,∙v"β",..≤⅛-⅛.,l,
рис. 24.9.
c помощью диалога
configure jdks вы можете изменить текущий jdk
‘iff
∙k⅛⅛⅛s⅛
help

Чарли Калверт

Глава 25

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

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