litceysel.ru
добавить свой файл
1
Что такое Java


Революция по имени Java

Вообще опасно объявлять каждую новую технологию программирования революционной. Если вы поторопитесь подать свой голос за признание технологии, подобной той, которая реализована в языке Java, революционной — вас могут закидать тухлыми яйцами или занести в разряд пустозвонов, падких на модные новинки. Что же в таком случае делает тот или иной продукт революционным ? Он не может быть только лишь компактней, быстрее и дешевле. Такой продукт должен изменить весь стиль работы, радикально упростив решение сложных проблем.

Создание языка Java — это действительно один из самых значительных шагов вперед в области разработки сред программирования за последние 20 лет. Язык HTML (Hypertext Markup Language — язык разметки гипертекста) был необходим для статического размещения страниц во “Всемирной паутине” WWW (World Wide Web). Язык Java потребовался для качественного скачка в создании интерактивных продуктов для сети Internet.

Три ключевых элемента объединились в технологии языка Java и сделали ее в корне отличной от всего, существующего на сегодняшний день.


  • Java предоставляет для широкого использования свои апплеты (applets) — небольшие, надежные, динамичные, не зависящие от платформы активные сетевые приложения, встраиваемые в страницы Web. Апплеты Java могут настраиваться и распространяться потребителям с такой же легкостью, как любые документы HTML.

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


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

С
оздавая программы на большинстве языков программирования
, приходится задавать себе вопрос: в какой операционной системе и на каком процессоре будет работать данная программа? Только ответив на него, можно включать в свою программу вызов некоторой функции из библиотеки, предназначенной для соответствующей операционной системы. Например, если вы разрабатываете приложение для Windows, можете воспользоваться библиотекой Microsoft Foundation Classes; если ваша программа предназначена для работы на платформе Macintosh - функциями из Мас OS Toolbox. Этот процесс показан на рис. 1.1.

Исходный код подготовленного текста программы необходимо пропустить через компилятор; он преобразует исходный код в набор инструкций для конкретного процессора, под управлением которого предполагается запускать программу. Система Windows обычно работает на базе одного из процессоров, выпускаемых фирмой Intel, например Pentium ММХ или Pentium III, а в компьютерах Macintosh используются процессоры семейства Motorola 680хО или PowerPC.


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

Точно так же вы можете не задаваться вопросом, на базе какого процессора будет работать создаваемый вами конечный продукт: Pentium от фирмы Intel, PowerPC от IBM или SPARC от компании Sun. Причина в том, что компилятор Java не генерирует непосредственно инструкции процессору. Он создает промежуточный код, или байт-код (bytecodes), для некой абстрактной виртуальной машины Java (Java Virtual Machine - JVM).



Байт-коды

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


Вы можете задать резонный вопрос: если виртуальной машины Java физически не существует, то как же работают Jаvа-программы? Компания Sun совместно с рядом независимых разработчиков создала программную версию JVM для большинства известных платформ. Когда на компьютер загружается файл, содержащий байт-коды (так называемый файл класса – class file), он интерпретируется виртуальной машиной Java на данном компьютере, которая считывает файл класса и выполняет команды, написанные на языке Java. На рис. 1.2 показано, как взаимодействуют между собой компилятор Java, файл класса и JVM.

Поскольку ядро виртуальной машины Java легко переносится с одного типа компьютера на другой, можно ожидать, что для каждого нового типа процессора и для каждой новой операционной системы вскоре появится своя реализация JVM. Поэтому Jаvа-программа сможет работать на любой известной компьютерной платформе, для которой существует реализация JVМ.


ЧТО такое среда выполнения Java

JVM является частью более обширного набора программ, работающего на компьютере конечного пользователя, так называемой среды выполнения Java (Java Runtime Environment - JRE). JRE включена в состав популярных броузеров Internet, таких как Microsoft Internet Explorer и Netscape Navigator. Если вы хотите, чтобы конечный пользователь мог запустить ваше Jаvа-nриложение, необходимо убедиться, что у него имеется JRE. Разработчики Java-пpoгрaмм получают JRE в составе Java Development Kit, а конечные пользователи могут загрузить ее отдельно.



История создания

Язык Java зародился как часть проекта создания передового программного обеспечения (ПО) для различных бытовых приборов. Реализация проекта была начата на языке С++, но вскоре возник ряд проблем, наилучшим средством борьбы с которыми было изменение самого инструмента - языка программирования. Стало очевидным, что необходим платформо-независимый язык программирования, позволяющий создавать программы, которые не приходилось бы компилировать отдельно для каждой архитектуры и можно было бы использовать на различных процессорах под различными операционными системами.

Рождению языка Java предшествовала довольно интересная история. В 1990 году разработчик ПО компании Sun Microsystems Патрик Нотон (Patrick Naughton) понял, что ему надоело поддерживать сотни различных интерфейсов программ, используемых в компании, и сообщил исполнительному директору Sun Microsystems и своему другу Скотту МакНили (Scott McNealy) о своем намерении перейти работать в компанию NeXT. МакНили, в свою очередь, попросил Нотона составить список причин своего недовольства и выдвинуть такое решение проблем, как если бы он был Богом и мог исполнить все, что угодно.

Нотон, хотя и не рассчитывал на то, что кто-то обратит внимание на его письмо, все же изложил свои претензии, беспощадно раскритиковав недостатки Sun Microsystems, в частности, разрабатываемую в тот момент архитектуру ПО NeWS. К удивлению Нотона, его письмо возымело успех: оно было разослано всем ведущим инженерам Sun Microsystems, которые не замедлили откликнуться и высказать горячую поддержку своему коллеге и одобрение его взглядов на ситуацию в Sun Microsystems. Обращение вызвало одобрение и у высшего руководства компании, а именно, у Билла Джоя
(Bill Joy), основателя Sun Microsystems, и Джеймса Гослинга (James Gosling), начальника Нотона.

В тот день, когда Нотон должен был уйти из компании, было принято решение о создании команды ведущих разработчиков с тем, чтобы они делали что угодно, но создали нечто необыкновенное. Команда из шести человек приступила к разработке нового объектно-ориентированного языка программирования, который был назван Oak (дуб), в честь дерева, росшего под окном Гослинга.


Вскоре компания Sun Microsystems преобразовала команду Green в компанию First Person. Новая компания обладала интереснейшей концепцией, но не могла найти ей подходящего применения. После ряда неудач неожиданно ситуация для компании резко изменилась: был анонсирован броузер Mosaic - так родился World Wide Web, с которого началось бурное развитие Internet. Нотон предложил использовать Oak в создании Internet-приложений. Так Oak стал самостоятельным продуктом, вскоре был написан Oak-компилятор и Oak-браузер "WebRunner". В 1995 году компания Sun Microsystems приняла решение объявить о новом продукте, переименовав его в Java (единственное разумное объяснение названию - любовь программистов к кофе). Когда Java оказалась в руках Internet, стало необходимым запускать Java-аплеты - небольшие программы, загружаемые через Internet. WebRunner был переименован в HotJava и компания Netscape встала на поддержку Java-продуктов.

Приложения

Даже если бы единственным достоинством Java была возможность создания машинно-независимых приложений, то и этого было бы вполне достаточно, чтобы завоевать расположение широкого круга программистов. Однако в 1993 году компания Sun обратила внимание на рост популярности Internet и начала дорабатывать Java таким образом, чтобы написанные на языке Java программы можно было запускать из Wеb-броузеров. Тогда самостоятельные Jаvа-программы стали называться Приложениями (applications) , а программы, работающие под управлением других программ (обычно Wеb-броузеров), - Аплетами (applets).

В большинстве языков программирования "конечным продуктом" является выполняемый файл, содержащий двоичные инструкции. В DOS и Windows эти файлы имеют расширение .ехе. В графических операционных системах, таких как Мас OS или Windows, для запуска программы достаточно дважды щелкнуть на ее пиктограмме.

Программы на языке Java имеют несколько другую природу. Поскольку файлы классов содержат байт-коды, предназначенные для обработки виртуальной машиной Java, то для запуска приложения необходимо сначала загрузить реализацию самой JVM. В состав Java SDK включен интерпретатор языка Java- модуль java, в котором реализованы функции JVM. Чтобы запустить приложение myApp с помощью JVM, нужно перейти в режим командной строки и ввести



Java myApp


Запуск Java-программы конечным пользователем

Если вы хотите передать приложение конечным пользователям, нет необходимости заставлять их работать с командной строкой. Напишите командный файл (batch file), запускающий интерпретатор Java и выполняющий ваше приложение. Тогда конечному пользователю для запуска вашего приложения, как и для запуска любой другой программы будет достаточно щелкнуть на пиктограмме командного файла.


Для чего предназначены аплеты

Современные Wеb-броузеры, такие как Netscape Navigator и Microsoft Intemet Explorer, являются достаточно мощными программами с богатым арсеналом возможностей. Кому же может понадобиться расширять возможности броузеров за счет использования каких-то аплетов?

Многие Wеb-дизайнеры не желают ограничивать свои творения рамками статичных изображений. Они хотят создавать «живые» страницы, способные взаимодействовать с пользователем. Чаще всего для реализации описанных возможностей лучше всего написать специальную программу. Однако язык НТМL (HyperText Markup Language), предназначенный для создания Wеb-страниц, вообще не обладает возможностями программирования. Как же быть?

Броузеры Netscape Navlgator и Microsoft Intemet Explorer поддерживают языки сценариев, таких как JavaScript. Эти языки позволяют расширить функциональные возможности стандартных элементов управления, реализованных в HTML, например кнопок или текстовых полей. Однако при этом вы не можете изменить их внешний вид и интерфейс пользователя. Эти языки сценариев нельзя также использовать для обеспечения обратной связи от клиента, поэтому они непригодны для создания приложений типа клиент/сервер. Иногда мощности языков сценариев явно недостаточно или требуется решение, которое не должно зависеть от конкретного броузера. В этих случаях идеально подойдут аплеты Java.

Аплет Jaya можно поместить на Wеb-страницу с использованием дескриптора языка HTML . Поскольку Java работает практически на всех популярных компьютерных платформах, то внешний вид аплета и его работа всегда будут одинаковы, при условии, что посетитель вашего Web-сервера использует один из поддерживающих Java броузеров.


Апплеты Java

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

Именно броские Web-страницы с анимацией привлекли большинство ранних приверженцев языка Java. Поскольку пользователи не сразу смогли полностью освоить наиболее революционные аспекты Java, этот язык часто сравнивался с другими технологиями для загрузки динамических изображений и простого взаимодействия с Web-клиентами. Компании, традиционно занимающиеся разработкой мультимедиа-технологий, например, Adobe или MacroMedia, утверждали, что их продукты предоставляют те же возможности, что и Java. По мнению Kaleida, Taligent и NeXT, их собственные объектно-ориентированные среды разработки были не менее революционны. Microsoft заявлял о победе технологии десятилетней давности. На самом деле ничто не может сравниться с тем, что вы откроете для себя, ощутив мощь программирования на языке Java.

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


Чем java отличается от других языков


Jаvа представляет собой современный объектно-ориентированный язык программирования, поддерживающий технологию клиент/сервер.


Java как язык программирования

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


Подобно SmallTalk, С и С++ (и в отличие от BASIC), Java предназначен для профессиональных программистов. А HTML и языки сценариев сегодня занимают то место, которое в былые времена занимал BASIC. Многие непрофессиональные программисты не умеют писать Jаvа-аплеты, но могут использовать аплеты, написанные другими, чтобы "вдохнуть жизнь" в свои Wеb-страницы. Зачастую для интеграции Wеb-страниц, Jаvа-аплетов и дополнительных модулей (надстроек) броузеров они используют технологию Netscape LiveConnect, основанную на JavaScript.


Основные преимущественные особенности Java:

- поддержка технологии клиент/сервер.

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

- поддержка многопоточности.

Введена концепция потоков (thread), как облегченного варианта концепции процессов (process), причем потоки стали частью самого языка и объектно-ориентированная модель Java ограничивает способы взаимодействия между приложениями, тем самым потоки обладают специальными средствами защиты, присущими процессам.

-жесткая модель защиты.

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


Защита в Java осуществляется:

- на уровне JVM;

- на уровне языка;

- с помощью интерфейса JavaSecurity.


Революционный язык программирования

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


Простота и мощь

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

Безопасность

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

Объектная ориентированность

Забавно наблюдать, как многочисленные новые диалекты старых языков безапелляционно объявляются объектно-ориентированными. Поскольку при разработке языка отсутствовала тяжелая наследственность, для реализации объектов был избран удобный прагматичный подход. Разработчики Java старались выдержать разумный компромисс между моделью пуристов — “все является объектами”, и моделью хакеров — “уйди с моей дороги”. Объектная модель в Java проста и легко расширяется, в то же время, ради повышения производительности, числа и другие простые типы данных Java не являются объектами.


Надежность

Java ограничивает вас в нескольких ключевых областях и таким образом способствует обнаружению ошибок на ранних стадиях разработки программы. В то же время в ней отсутствуют многие источники ошибок, свойственных другим языкам программирования (строгая типизация, например). Большинство используемых сегодня программ “отказывают” в одной из двух ситуаций: при выделении памяти, либо при возникновении исключительных ситуаций. В традиционных средах программирования распределение памяти является довольно нудным занятием — программисту приходится самому следить за всей используемой в программе памятью, не забывая освобождать ее по мере того, как потребность в ней отпадает. Зачастую программисты забывают освобождать захваченную ими память или, что еще хуже, освобождают ту память, которая все еще используется какой-либо частью программы. Исключительные ситуации в традиционных средах программирования часто возникают в таких, например, случаях, как деление на нуль или попытка открыть несуществующий файл, и их приходится обрабатывать с помощью неуклюжих и нечитабельных конструкций (кроме Delphi). Java фактически снимает обе эти проблемы, используя сборщик мусора для освобождения незанятой памяти и встроенные объектно-ориентированные средства для обработки исключительных ситуаций.


Интерактивность

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

Независимость от архитектуры ЭВМ

Вопрос о долговечности и переносимости кода важнее религиозных войн между ПК и Макинтошами. Создатели Java наложили на язык и на среду времени выполнения несколько жестких требований, которые на деле, а не на словах позволяют, однажды написав, всегда запускать программу в любом месте и в любое время (где существует виртуальная Java-машина – броузеры на всех платформах, OS/2, Netware).

Интерпретация плюс высокая производительность

Необычайная способность Java исполнять свой код на любой из поддерживаемых платформ достигается тем, что ее программы транслируются в некое промежуточное представление, называемое байт-кодом (bytecode). Байт-код, в свою очередь, может интерпретироваться в любой системе, в которой есть среда времени выполнения Java. Большинство ранних систем, в которых пытались обеспечить независимость от платформы, обладало огромным недостатком — потерей производительности (Basic, Perl). Несмотря на то, что в Java используется интерпретатор, байт-код легко переводится непосредственно в “родные” машинные коды (Just In Time compilers) “на лету”. При этом достигается очень высокая производительность (Symantec JIT встроен в Netscape Navigator).


Простота изучения

Язык Java, хотя и более сложный чем языки командных интерпретаторов, все же неизмеримо проще для изучения, чем другие другие языки программирования, например C++. Черты языка станут казаться вам естественным путем для решения тех или иных задач и будут способствовать отработке хорошего стиля программирования. Поскольку объектная модель в Java одновременно проста и выразительна, вы скоро освоитесь с объектно-ориентированным стилем создания программ.

Богатая объектная среда

Среда Java — это нечто гораздо большее, чем просто язык программирования. В нее встроен набор ключевых классов, содержащих основные абстракции реального мира, с которым придется иметь дело вашим программам. Основой популярности Java являются встроенные классы-абстракции, сделавшие его языком, действительно независимым от платформы. Библиотеки, подобные MFC/COM, OWL, VCL, NeXTStep, Motif и OpenDoc прекрасно работают на своих платформах, однако сегодня главной платформой становится Internet.

В реализации Java 1.1.6 находится 23 пакета (в Java 1.0.2 их было 8), а количество классов – 503 (211). Сейчас проходит завершающую стадию бета-тестирования JDK 1.2. Для тех, кто собирается поддерживать Java 1.0 наряду с 1.1 (актуальность этой поддержки подтверждает Borland JBuilder 2.0 и другие продукты), специально выделены новшества 1.1 в Приложение 2.

Таблица 1

Пакеты Java API

Имя пакета

Содержимое

java.applet

Классы для реализации апплетов

java.awt

Классы для работы с графикой, текстом, окнами и GUI

java.awt.datatransfer


Классы для обеспечения передачи информации (Copy/Paste)

java.awt.event

Классы и интерфейсы для обработки событий

java.awt.image

Классы для обработки изображений

java.awt.peer

GUI для обеспечения независимости от платформы

java.beans

API для модели компонентов JavaBeans

java.io

Классы для различных типов ввода-вывода

java.lang

Классы ядра языка (типы, работа со строками, тригонометрические функции, обработка исключений, легковесные процессы)

java.lang.reflect

Классы Reflection API

java.math

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

java.net

Классы для работы в сети Интернет (сокеты, протоколы, URL)

java.rmi

Классы, связанные с RMI (удаленный вызов процедур)

java.rmi.dgc

Классы, связанные с RMI

java.rmi.registry

Классы, связанные с RMI

java.rmi.server

Классы, связанные с RMI


java.security

Классы для обеспечения безопасности

java.security.acl

Классы для обеспечения безопасности

java.security.interfaces

Классы для обеспечения безопасности

java.sql

 

java.text

Классы для обеспечения многоязыковой поддержки

java.text.resources

Классы для обеспечения многоязыковой поддержки

 java.util

Разноообразные полезные типы данных (стеки, сдовари, хэш-таблицы, даты, генератор случайных чисел)

java.util.zip

Классы для обеспечения архивации


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


Java как объектно-ориентированный язык


В целом процесс разработки программного обеспечения включает пять этапов.


  • Анализ - определение требований пользователя.

  • Разработка - процесс выработки решения, удовлетворяющего требованиям пользователя..

  • Реализация - запись разработанной модели на языке программирования, например Java.

  • Тестирование - процесс проверки, удовлетворяет ли разработанная программа предъявляемым требованиям.
  • Сопровождение - устранение выявленных дефектов, добавление новых свойств; поддержание работоспособности программы при изменении внешней среды (например, операционной системы или СУБД).



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

На этапе объектно-ориентированной разработки определяются все необходимые классы и располагаются в порядке иерархии. На рис. 1.3 показано вероятное место класса Автомобиль в иерархии классов системы моделирования транспортных перевозок. На этом же этапе разработки приложения определяются методы и данные, которые будут связаны с каждым экземпляром класса. На рис. 1.4 показан один из способов представления этой информации на этапе разработки.

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

Первые объектно-ориентированные языки появились еще в 1967 году. В 1983 году Бьярн Страуструп, (Bjane Stroustrup ) из АТ&Т Lаbоrаtоriеs разработал версию популярного языка программирования С, которая поддерживала классы. Этот "С с классами" превратился в С++ - наиболее популярный объектно-ориентированный, а возможно, и самый популярный язык программирования вообще.

При разработке Java специалисты Sun взяли за основу лучшие принципы и синтаксис язык C++, в том числе те, что позволяют легко превращать объектно-ориентированную модель в программу.


Введение в язык Java – Первая программа

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


Прежде всего, в этой главе мы напишем, оттранслируем, и запустим каноническую программу “Hello World”. После этого мы рассмотрим все существенные лексические элементы, воспринимаемые Java-транслятором: пробелы, комментарии, ключевые слова, идентификаторы, литералы, операторы и разделители. К концу главы вы получите достаточно информации для того чтобы самостоятельно ориентироваться в хорошей Java-программе.

Hello World

Итак, вот ваша первая Java-программа:

class HelloWorld {

public static void main (String args []) {

System. out. println ("Hello World");

}

}

Для того, чтобы поработать с приведенными в книге примерами вам нужно получить по сети из Sun Microsystems и установить Java Developers Kit — пакет для разработки Java-приложений (http://java.sun.com/products/jdk). Полное описание утилит пакета JDK – в Приложении 1.

Язык Java требует, чтобы весь программный код был заключен внутри поименованных классов. Приведенный выше текст примера надо записать в файл HelloWorld.java. Обязательно проверьте соответствие прописных букв в имени файла тому же в названии содержащегося в нем класса. Для того, чтобы оттранслировать этот пример необходимо запустить транслятор Java — javac, указав в качестве параметра имя файла с исходным текстом:

С: \> javac HelloWorld.Java

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


С: > java HelloWorld

Hello World

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

Шаг за шагом

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

Строка 1

class HelloWorld {

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

Строка 2

public static void main (String args []) {

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

public

Разбивая эту строку на отдельные лексемы, мы сразу сталкиваемся с ключевым словом public. Это — модификатор доступа, который позволяет программисту управлять видимостью любого метода и любой переменной. В данном случае модификатор доступа public означает, что метод main виден и доступен любому классу. Существуют еще 2 указателя уровня доступа — private и protected, с которыми мы более детально познакомимся в главе 8.

static

Следующее ключевое слово — static. С помощью этого слова объявляются методы и переменные класса, используемые для работы с классом в целом. Методы, в объявлении которых использовано ключевое слово static, могут непосредственно работать только с локальными и статическими переменными.


void

У вас нередко будет возникать потребность в методах, которые возвращают значение того или иного типа: например, int для целых значений, float - для вещественных или имя класса для типов данных, определенных программистом. В нашем случае нужно просто вывести на экран строку, а возвращать значение из метода main не требуется. Именно поэтому и был использован модификатор void. Более детально этот вопрос обсуждается в главе 4.

main

Наконец, мы добрались до имени метода main. Здесь нет ничего необычного, просто все существующие реализации Java-интерпретаторов, получив команду интерпретировать класс, начинают свою работу с вызова метода main. Java-транслятор может оттранслировать класс, в котором нет метода main. А вот Java-интерпретатор запускать классы без метода main не умеет.

Все параметры, которые нужно передать методу, указываются внутри пары круглых скобок в виде списка элементов, разделенных символами ";" (точка с запятой). Каждый элемент списка параметров состоит из разделенных пробелом типа и идентификатора. Даже если у метода нет параметров, после его имени все равно нужно поставить пару круглых скобок. В примере, который мы сейчас обсуждаем, у метода main только один параметр, правда довольно сложного типа.

Элемент String args[] объявляет параметр с именем args, который является массивом объектов — представителей класса String. Обратите внимание на квадратные скобки, стоящие после идентификатора args. Они говорят о том, что мы имеем дело с массивом, а не с одиночным элементом указанного типа. Мы вернемся к обсуждению массивов в следующей главе, а пока отметим, что тип String — это класс. Более детально о строках мы поговорим в главе 9.

Строка 3

System. out. prlntln("Hello World!");

В этой строке выполняется метод println объекта out. Объект out объявлен в классе OutputStream и статически инициализируется в классе System. В главах 9 и 13 у вас будет шанс познакомиться с нюансами работы классов String и OutputStream.

Закрывающей фигурной скобкой в строке 4 заканчивается объявление метода main, а такая же скобка в строке 5 завершает объявление класса HelloWorld.