Обзор JBuiIder

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

■ JBuilder содержит мощный редактор и отладчик. Редактор и связанные с ним инструментальные средства, наподобие CodeInsight, помогают исследовать ваш код и находить в программах доступные объекты и методы. Просматри­вать методы или объекты можно и в JDK (Java Development Kit — Набор средств для разработки приложений на Java) или с помощью любого другого используемого вами инструмента. При использовании JBuilder вам никогда не придется гадать, как или где определен какой-либо класс или переменная. JBuilder всегда помнит все корректные идентификаторы вашей программы и может мгновенно показать их объявление. Отладчик позволяет пройти по коду, просмотреть все потоки программы, все ее переменные, трассировку стека программы и выполнить еще множество других полезных задач.

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

■ JBuilder также содержит ряд мастеров, которые могут автоматизировать неко­торые часто встречающиеся задачи. Например, с помощью JBuilder легко сге­нерировать документацию Javadoc, являющуюся одним из способов коммен­тирования вашего кода. Не менее легко создаются JAR-файлы (Java Archive — архив Java) и инсталляция вашего приложения. Другие инструменты в усовер­шенствованных версиях JBuilder помогут вам создавать приложения, работа­ющие с базами данных, или распределенные приложения.

Все эти темы, кроме последней, будут подробно освещены в этой книге.

JBuilder не является волшебной палочкой, способной превратить плохого про­

Граммиста в хорошего. Я считаю, что он может помочь в изучении языка Java и уско­рить выпуск приложений. Однако он не может сделать ленивого программиста хо­рошим, так же как и текстовый процессор не может помочь плохому писателю стать хорошим. Хороший редактор может сделать хорошего писателя еще лучшим писа­телем, а хороший инструмент программирования может сделать хорошего програм­миста еще лучшим программистом. В изучении приемов хорошего программирова­ния и правил, управляющих языком Java, не существует легких путей.

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

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

Большинство продвинутых свойств JBuilder можно использовать, а можно и не использовать, в зависимости от ваших предпочтений. Но даже если отбросить три четверти инструментов, предлагаемых JBuilder, то все равно выгоднее использовать его, а не Блокнот или даже мощный текстовый редактор типа emacs либо Visual Slick Edit. Я считаю, что достаточно даже редактора и отладчика JBuilder, чтобы лю­бой здравомыслящий человек отказался от текстового редактора и средств команд­ной строки в его пользу.

Миф о запатентованном формате

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

примечаниеПри желании, вы можете добавить в свои проекты специализированные классы, разработанные компанией Borland, но если вы не хотите это делать, то в этом нет необходимости. И, разумеется, эти специализированные классы прекрасно компи­лируются в JDK компании Sun, если вы включите в проект соответствующие JAR — файлы. Не хотите пользоваться классами Borland — и не надо. Вы ничего не потеря­ете в самом JBuiIder, если не будете их использовать. Они просто доступны для ис­пользования, как и любые другие инструменты независимых разработчиков, вроде Xerces, JUnit или Ant. Специализированный код от Borland не будет использоваться практически нигде в этой книге. Единственное серьезное исключение — часть, по­священная работе с базами данных, существенно зависящая от очень полезных биб­лиотек компании Borland. Но за использование этих инструментов, работающих с базами данных, вам не нужно платить какие-то лицензионные отчисления.

За один из инструментов Borland работы в Java с базами данных, называе­мый JDataStore, необходимо платить. Однако он в этой книге не обсуждается. Мне нравится технология JDataStore, но моя основная цель — использование JBuiIder для создания типовых Java-приложений. Я решил не усложнять дело, включая в книгу запатентованный код.

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

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

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

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

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

Но вообще JBuilder — это просто инструмент, помогающий писать стандартный Java-код в точности так, как описано в документации, книгах и учебниках компа­нии Sun. Какой бы код вы ни получили с помощью JBuilder, в нем не будет ни одно­го запатентованного символа. За исключением части, посвященной работе с базами данных, почти весь код, приведенный в данной книге, будет компилироваться без изменений с помощью обычного JDK компании Sun. Несколько случаев, когда для компиляции ваших программ потребуются классы компании Borland, включены специально по следующим двум причинам:

1. Чтобы показать, как использовать класс компании Borland, который я считаю предельно полезным.

2. Чтобы показать, как использовать класс компании Borland, если вы сами за­хотите включить его.

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

И1вл*ы*йв*ви***и Чтобы узнать, используете ли вы код компании Borland, посмотрите, со­держат ли важные операторы в начале ваших файлов слова "com. borland". В большин­стве случаев вы не найдете таких операторов импорта. Но если вы увидите их, и они вам не понравятся, просто удалите их и связанный с ними код. В этой книге я буду подробно Объяснять те редкие случаи, когда такие операторы могут появиться.

Управление проектами

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

Если у вас уже есть хоть какой-то опыт программирования на Java, то вы, по крайней мере, слышали о пакетах и путях классов. В некотором смысле эти темы в Java похожи на указатели в C или C++. Пакеты и пути классов — это камень пре­ткновения для начинающих, но если вы поймете их, то увидите, что они являются одними из наиболее полезных и мощных свойств языка.

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

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

Есть ли у вас инструменты корректировки связей или нет — в любом случае па­кеты и пути классов играют большую роль в программировании на Java вообще и с помощью JBuilder в особенности. Поэтому их глубокому исследованию будет посвя­щена часть V, "Управление проектами".

Немного о редакциях JBuiIder

Я работал в компании Borland более восьми лет, и поэтому знаю многое о том, как функционирует эта компания. Одним из предметов постоянного раздражения пользователей Borland являются решения отдела сбыта о том, какие свойства в ка­кие продукты должны входить. В частности, JBuilder выпускается в трех редакциях: Personal, SE (называемая также Professional) и Enterprise. Цены на эти продукты су­щественно различаются.

примечаниеЯ знаю, что, как правило, разработчики и группа сбыта компании Borland стара­ются поместить инструменты соответствующего уровня в продукты того же уровня. Например, продукт Enterprise (уровня предприятия) собран в основном из частей, нужных корпоративным разработчикам, редакция SE содержит свойства для про­фессиональных разработчиков, которым не требуется поддержка многоуровневой среды, а версия Personal (для личного использования) является сильно усеченным продуктом, содержащим лишь самые необходимые свойства, чтобы просто быть по­лезным. Версия Personal подходит для студентов или разработчиков, создающих приложения, не работающие с базами данных и не являющиеся многоуровневыми приложениями.

C помощью JBuiIder редакции Personal можно разрабатывать очень большие и очень мощные приложения. Эта редакция не накладывает ограничения на раз­мер или сложность разрабатываемых вами приложений. А поскольку Java — это бес­платно распространяемый язык, то нет и существенных ограничений на программные ин­терфейсы (API), доступные версии Personal. Но если вы хотите перейти в разработку Web-приложений или разработку многоуровневых (multi-tier) приложений, то вам очень пригодятся свойства, заложенные в редакциях SE и Enterprise. Они не обязательны, но полез­ны. Можно разрабатывать приложения, взаимодействующие с базами данных, или Web-при — Ложения и с помощью редакции Personal, но тогда процесс разработки усложнится.

Вот цитата с Web-сайта компании Borland: "JBuilder Personal — это полнофунк­циональная версия JBuilder начального уровня для личного некоммерческого ис­пользования. Лицензия на JBuilder Personal имеет неограниченный срок действия". Что это значит, знают только сотрудники Borland. C моей точки зрения, единствен­ное реальное неудобство редакции Personal состоит в большей трудности переклю­чения между JDK. Переключение JDK, используемое аплетами и приложениями при работе в среде JBuilder, описано в конце главы 3. JBuilder7 поставляется с JDK 1.3.1 компании Sun, а начиная с JBuilder 8, версия JDK обновлена до 1.4.1. Как я

Расскажу позже, вы можете использовать и другие JDK, но в таких случаях у вас мо­гут возникнуть (или не возникнуть) некоторые проблемы. По умолчанию все редак­ции продукта работают на JDK 1 3.1, однако можно разрабатывать приложения на любом JDK, каком пожелаете, от самых древних до самых современных.

примечаниеРешение о покупке JBuilder редакции SE зависит от вашей зависимости от Java и разработки приложений. Если вы работаете круглосуточно, 365 дней в году, всецело занимаясь разработкой Java-приложений, то стоит вложить деньги в этот продукт. Если же вы программируете по выходным, или вашим основным языком является Delphi, Perl или C++, то, возможно, вам будет достаточно редакции Personal

Значительная часть работы над этим текстом посвящена потребностям пользователей JBuiIder Personal и поддержанию актуальности текста. Например, почти все программы из числа рассмотренных в книге, которые не работают с базами данных, компилируются в JBuiIder Personal без всяких изменений. Однако новые версии JBuiIder выходят очень быстро, зачастую более двух раз в год. Выпуск редакции Personal часто задерживается по сравнению С другими редакциями, так что этот промежуток становит­ся еще меньше. В результате снимки экранов редакции Personal и некоторые детали ее работы могут не вполне соответствовать свойствам JBuiIder Personal. Поскольку к тому моменту, когда большинство читателей увидят эту книгу, будет выпущена новая версия JBuiIder, посетите URL-адрес Www. wordware. com/calvert и посмотрите об­новления этого продукта. Вы также можете зайти на мой Web-сайт по адресу Www. elvenware. com, содержащий ссылки на сайт Http://sourceforge. net/ projects∕elvenware, на котором находятся zip-файлы с исправленными исходными ко­дами и репозиторий CVS (системы управления версиями файлов). Я также собираюсь ре­гулярно писать статьи по программированию на Java, которые могут касаться этих вопро­Сов, на Web-сайте компании Borland (Http://community. borland. com/java).

По согласованию с моим редактором эта книга посвящена в основном редакци­ям JBuilder уровней SE и Personal. Если вам нужно узнать что-нибудь о свойствах уровня Enterprise, следует обратиться к другим книгам, выпущенным издательством Wordware Publishing.

О языке Java

Я написал эту книгу, чтобы рассказать о JBuilder, а не о Java. Но четкой границы, где кончается описание языка Java и начинается описание среды JBuilder, нет. До­вольно часто эти две темы тесно переплетены.

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

примечаниеОсновная моя цель — рассказать о самом JBuilder. Но я уделю внимание и базо­вому синтаксису Java, и некоторым запутанным синтаксическим проблемам, с кото­рыми сталкиваются программисты, пишущие на нем.

**-∙*∙*∙***a Если ваш преподаватель отговаривает вас от использования JBuiIder, по­тому что это "нечестно", то, наверно, вам придется последовать его совету, однако сам я в этом не уверен. JBuiIder существенно облегчает создание интерфейса вашей про­граммы и может автоматизировать ряд других задач. Но он не делает программирова­ние "легким" и не решает все ваши проблемы. Я думаю, что предположение о "нечест­ности" использования JBuiIder немного похоже на повара, который утверждает, что по-на­стоящему приготовить пищу можно только на открытом огне. А все эти печки, газовые и электроплиты, духовки — все это "нечестно". Настоящие повара готовят на открытом огне! Может быть. Но хотя готовить пищу на плите и легче, это не значит, что теперь процесс приготовления пищи становится легким делом. Все равно приготовить вкусную еду совсем не просто, даже если есть инструмент, облегчающий некоторые части этого процесса. Так и JBuiIder: это хороший инструмент для программистов, но его применение не означает, что в искусстве программирования не осталось трудных мест. Вот еще одна аналогия. Велосипед или автомобиль — хорошие инструменты для тех, кому нужно пере­мещаться на большие расстояния. Через весь город можно пройти и пешком, но если вы занятый человек, и у вас много дел, то автомобиль будет хорошим подспорьем. Это же верно и для JBuiIder: если вам необходимо выполнить реальную работу, то вы должны ис­пользовать любой доступный инструмент. Не волнуйтесь, для вас останется немало серьез­Ных задач, даже если вы овладеете всеми инструментами, присутствующими в JBuiIder.

Изменение спецификации языка Java

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

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

Иногда новые возможности языка Java вне всяких сомнений улучшают его. На­пример, включение в Java 1.4 APl для работы с XML или регулярными выражениями естественным образом увеличили мощность языка.

Но развитие языка не всегда так прямолинейно. Вот, например, графический интерфейс пользователя (GUI). Изначально компания Sun создала нечто, назван­ное AWT, т. е. Abstract Windows Toolkit (Абстрактный инструментальный набор для работы с окнами). Этот API применялся для добавления кнопок, списков и других визуальных компонентов в Java-аплеты и приложения. Применять его было необы­чайно просто. C помощью AWT многие начинающие программисты на Java могли создавать мощные аплеты и приложения.

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

Подобные вопросы означают проблемы для программистов. Другие проблемы воз­никают из-за сложности некоторых усовершенствованных возможностей языка Java.

Законодатели языка Java

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

Законодатели языка Java рекомендуют писать строки кода наподобие следующей:

String Value = "Это строка";

Эти же дипломированные прорицатели предлагают не писать таких строк кода:

String value = new String ("Это Строка") ;

Суть здесь в том, что запись строкового литерала на самом деле создает экземп­ляр строки, поэтому второй пример порождает не один, а два экземпляра строки — конечно, так не стоит поступать, однако новичку в Java это трудно понять.

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

Но проблема в том, что он делает не все так, как можно предположить. Если имеется класс, работающий с массивом объектов, и вы пишете методы этого класса, например, для добавления и удаления объектов, то вы можете породить "утечку па­мяти". В частности, вы не должны писать вот такой код:

Class MyClass

{

Private Object[] myArray; public Object removelAstltem()

{

Int IastIndex = myArray. length — 1;

Object result = myArray[IastIndex]; return result;

}

)

Вместо этого следует писать:

Class MyClass

{

Private Object[] myArray; public Object removeLastItem()

{

Int IastIndex = myArray. length — 1;

Object result = myArray[IastIndex]; myArray [IastIndex] = null; return result;

}

)

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

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

Эта книга и язык Java

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

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

■ Какой способ записи наиболее прост и понятен для решения какой-либо конкретной задачи?

■ Какое решение лучше всего сочетается с инструментами JBuilder?

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

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

примечаниеЕсли я сомневаюсь в выборе, я всегда обращаюсь к правилу 1, являющемуся моим программистским кредо: код должен быть максимально простым. Я не всегда дотягиваюсь до этого высокого стандарта, но я стараюсь. Я считаю, что способность писать простой понятный код — это самое большое достоинство, которым только может обладать настоящий программист.

M*β**Mfc⅛∣β*β*β⅛∙ Если вы хотите узнать больше о языке Java и его корректном использо­Вании, обратитесь к главе 20, "Компоновка Java".

JBuiIder и Swing

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

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

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

Но все же не всегда сразу понятно, как использовать некоторые возможности Swing в JBuilder. Сначала компанией Sun был создан Swing, а уже потом Borland со-

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

Результат усилий компании Borland по аккуратному внедрению Swing — это тема, к которой я буду возвращаться во многих местах этой книги. В общем, они проделали великолепную работу, но я попытаюсь указать те места, где возможны не­которые затруднения.

Что я думаю о Java?

Вышеприведенные комментарии могут дать вам некоторое представление о моем подходе к программированию на Java. Это большой, мощный и сложный язык, но С Моим опытом и в моем возрасте я не буду петь дифирамбы компаниям Sun и Borland. И Java, и JBuilder — замечательные продукты. Но в них есть свои изъяны. И как автор, я считаю свои долгом указывать на эти изъяны, когда они встречаются, и помогать находить лучшие способы их обхода.

Хотя, вообще-то, вы читаете книгу, написанную энтузиастом Java. Я работаю с этим языком уже четыре или пять лет, и мне действительно нравятся его достоинства. Oco бенно мне нравится то, что Java обеспечивает такую мощную межплатформенную под­держку. Мне нравится Linux, a JBuilder и Java хорошо работают на этой платформе.

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

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

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

Что я думаю о Билле и Линусе?

В войне операционных систем я стараюсь придерживаться нейтралитета. В дан­ной книге я не хочу выступать за Linux и против Windows. Мне нравятся обе эти платформы, и я желаю успеха им обеим. Я считаю, что соревнование между этими платформами, а не подавление одной другой, пойдет на пользу прежде всего нам Если вы программируете на Java, то у вас мало поводов отдавать предпочтение той или иной платформе. Java-программы отлично выполняются на любой из них.

Все программы, приведенные в этой книге, успешно апробированы на обеих платформах. Они должны без проблем выполняться под Linux, Windows и на боль­шинстве других платформ Java.

К сожалению, у меня не было доступа к компьютеру Apple, но я думаю, что рабо­та в OS X доставила бы мне удовольствие. То, что она построена на основе BSD, уже само по себе интересно.

Сопровождающие книгу материалы и контакте автором

Все примеры программ, упомянутые в данной книге, входят в состав сопро­вождающих материалов, доступных на сайте издателя русскоязычной редакции этой книги. Исходные коды также можно выгрузить из моего Web-сайта Www.Elvenware.Com. Сопровождающие материалы включают в себя описание того, как запускать тот или иной код.

Если у вас возникнут технические сложности с кодом, вы можете написать мне по адресу Ccaiverteyahoo.Com. Я не смогу помочь в конкретных проблемах, не свя­занных с ошибками в моем коде, и не смогу помочь в выполнении домашних зада­ний. Можно просто написать, чтобы сказать "Привет". Мне особенно интересны комментарии, подобные "Эта глава мне очень помогла", или "Я не смог понять гла­ву, посвященную…", или "Мне очень понравились разделы о том-то и том-то, пожа­луйста, напишите об этом побольше", или "Я зря потратил на это время”, или "Это слишком наворочено", или "Уровень сложности подобран точно", или "Мне не нра­вится, когда выделаете так и так", или "А вот гораздо лучший вариант программы …", или "Ваша книга великолепна. После ее прочтения я получил работу в качестве ру­ководителя отдела компьютерного планирования при правительстве США, мои во­лосы больше не седые, а того цвета, который был в пять лет, я вырос на три санти­метра, исчезли все проблемы со здоровьем, а мои капиталы утроились". Я могу отве­тить, а могу и не ответить на комментарии подобного рода, но мне будет интересно их получить.

Я не юрист

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

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

Мой (или все-таки наш?) стиль изложения

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

Если глава написана Марджи и Чарли, то, значит, большую часть работы выпол­нила Марджи. Ее имя написано первым не просто потому, что мы сначала упомина­ем женщин, а потому, что она является основным автором этой главы. Обычно это значит 75—80% главы Если глава написана только Марджи или только Чарли, то указанный автор выполнил не менее 85% работы. В таких главах неуказанный автор все же мог написать 10-15% главы. Как уже было сказано, нет таких глав, которые бы не содержали хотя бы небольшую часть работы нас обоих.

примечаниеЧарли выполнил большую часть разработок, приведенных в этой книге, под Windows XP Pro, хотя ощутимая часть работы была проведена под Linux, и очень не­большой объем — под Windows 2000. Девяносто процентов кода, работающего с ба­зами данных, было сначала написано под Linux и лишь протестировано под Windows Марджи работала под управлением Windows 2000 и Linux. Весь код был проверен и в Linux, и в Windows.

И Марджи, и Чарли работали в системе Red Hat Linux 7.2. Обе версии постоянно обновлялись либо с помощью Red Hat Network, либо специально из различных сайтов. Например, Чарли вручную установил KDE 3.0 и переключил свой рабочий стол GNOME Ximian с помощью встроенных средств автоинсталляции.

примечаниеБольшая часть чернового варианта текста была подготовлена в HTML-формате под Linux, но ближе к концу работы, в соответствии с требованиями издательства, пришлось перейти в Microsoft Word. Word сдвинул нас в сторону Windows и затруд­нил работу в Linux. В самом конце работы над проектом наша возможность работы с файлами Word под Linux увеличилась благодаря CrossOver Office и Open Office.

JBuiIder нормально работает в Linux под GNOME. Выпуск KDE 3.0 стал Подарком для тех, кто хотел использовать JBuiIder1 но предпочитал KDE.

Как правило, мы писали текст так, как будто был всего один автор. Например, в тек­сте обычно употребляется местоимение первого лица единственного ("я"), а не множе­ственного ("мы") числа Это сделано в основном для того, чтобы избежать королевского употребления "мы", наподобие трактатов XVlII века или новелл Томаса Пинчена.

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

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

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

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

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

Резюме

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

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

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

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

Глава 2

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

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