Хосе М. Фернандес Индекс: Вступление Происхождение Где найти и как установить JAVA Среда разработки Характеристики Первая программа на JAVA Подведение итогов |
Java. Часть IАннотация: Это первая статья в серии о программировании на Java. В первой части будут даны описание Java как языка, его общие характеристики и местоположение большинства подходящих источников информации. Вступление
Эта статья начинает серию, описывающую язык программирования Java и среду разработки Java. Прежде всего мне хотелось бы держаться подальше от тем, касающихся истории языка, микроволновых печей, стиральных машин... (если это кого-либо волнует, то существует большое количество публикаций на эту тему, даже в дамских романах). Я также буду держаться подальше от Дюка (эмблема Java), маленького парнишки с огромным носом и треугольным телом, который взмахивает руками в ритм маримбы и напоминает мне старые американские научно-фантастические фильмы. Есть нечто причудливое в феномене Java. Каждый компьютерный журнал, независимо от размеров, пишет о нем, существует большое количество программных компаний, продающих продукты для разработки Java-апплетов и редкий веб-сайт не имеет одного или двух Java-апплетов. В этой серии я постараюсь на сколько возможно глубоко исследовать этот язык программирования, который прост для простых вещей и в то же время очень сложен в освоении, так как он постоянно развивается. Целью наших первых нескольких статей будет описание языка в общем с тем, чтобы позднее мы смогли перейти к более сложным темам, таким как апплеты, сетевые проекты, JDBC, beans и т.д. Я бы хотел особо подчеркнуть, что Java является языком общего назначения, и что он не используется только для написания апплетов для веб-страничек, хотя именно это сделало его очень популярным. Мы не можем придерживаться только этого аспекта Java, так как существует много других альтернатив, которые гораздо интереснее, чем java-апплеты. В этой первой статье дается больше описаний, чем практического материала. В следующей статье мы исследуем фундаментальные характеристики этого языка и среду разработки. Только после этого мы встретимся с примером программирования на Java. ПроисхождениеВ первые 18 месяцев своей жизни в 1991 году Java разрабатывался James Gosling, Patrick Naughton, Chis Warth, Ed Frank и Mike Sherindan в Sun Microsystem Inc. В промежутке с 1992 по 1995 Bill Joy, Arthur Van Hoff, Jonathan Payne, Frank Yellia и Tim Lindolm совместно доводили до ума начальный прототип. >По датам видно, что Java появился до или по крайней мере одновременно с WWW -- пока в 1991 году Tim Berners Lee не разработал язык HTML. Синтаксис Java очень схож с C его объектно-ориентированные характеристики также сходны с C++. Java является логически последовательным языком программирования. Сходство с C и C++ может создать впечатление, что Java является версией C++ для Интернета, но есть важные теоретические и практические различия, особенно в том, что Java улучшает и совершенствует объектно-ориентированную парадигму C++. Интернет открыл Java и сделал его повсеместно известным языком, и одновременно Java оказал глубокий эффект на Интернет, поскольку он расширил диапазон объектов, которые можно свободно перемещать в кибер-пространстве (динамические автоматически исполняемые программы). Где найти и как установить JavaСуществует несколько средств, абсолютно необходимых для программирования на Java. Кстати, я буду иметь в виду среду GNU/LINUX (если кто не понял): Текущая реализация для Linux, основанная на формате ELF, требует ядра 1.2.13 или более поздней версии. Я буду использовать среду JDK (Java Development Kit), Netscape версии 2.0.14 или более поздней и текстовый редактор типа Xemacs. Мы всегда будем работать в Xwindows. Это необходимо для разработки апплетов и программ с графическим интерфейсом, хотя это и не обязательно. Дистрибутив JDK можно загрузить со следующего веб-сайта: Для более быстрой загрузки на этом же сайте можно выбрать подходящее зеркало. Несколько месяцев назад последней версией была JDK-1.1.3 (именно она используется в этой статье), но когда я последний раз там был, я видел версию 1.19. Заметьте, если мы хотим загрузить все, то придется загружать 24 МБ! Тем не менее, загрузка только самого необходимого составит 12 МБ (терпение!). После разархивации архива с помощью gunzip можно начинать работать. Обычно мы устанавливаем дистрибутив в каталог /usr/local, создавая подкаталог /JDK1.1.3, и там следующее: /doc Официальная документация в формате HTML /demo Демонстрационные программы на Java /lib Библиотеки /bin Здесь находятся необходимые инструменты JDK. В каталоге /lib мы найдем файл "classes.zip" (не разворачивайте этот файл), он содержит все скомпилированные классы, которые могут использоваться JDK. В корневом каталоге мы найдем файл "src.zip", содержащий исходные тексты к classes.zip. Их нельзя скомпилировать и они входят в дистрибутив только для информации. Среда разработкиКак уже было сказано выше, средства разработки расположены в каталоге /bin: javac : компилятор java, который преобразует исходный текст java в байт-коды. Java : интерпретатор java. Исполняет байт-коды java. jre : еще один интерпретатор, сходный с Java, но созданный для тех пользователей, которым не требуются все имеющиеся опции. appletviewer : проверяет и запускает апплеты. jdb : отладчик. javap : дизассемблер байт-кодов, скомпилированных на Java. javadoc : генератор документации, создает несколько страниц HTML, описывающих открытые и защищенные классы, интерфейсы, конструкторы, методы и поля. Также создает дерево классов и индекс всех членов. javah : средство по добавлению собственных методов (на C) к программам Java. jar : архивирует классы java и исходные тексты в архив Jar. javakey : средство поддержки цифровых подписей. updateAWT : обновляет изменившиеся имена из методов AWT1.02 в приложении. Для спокойной работы с текущей структурой каталогов я бы посоветовал Вам добавить /usr/local/JDK1.1.3/bin к переменной окружения PATH. Если Вы хотите сделать среду разработки доступной во всей системе, то подправьте переменную PATH в файле /etc/profile. ХарактеристикиПрежде чем продолжать, мы должны спросить себя: что же такое Java? Мы можем ответить так, как сказано в руководстве JDK: Java - это две вещи, язык программирования и платформа. Как язык программирования Java является языком высокого уровня со следующими характеристиками (с некоторого момента мы будем исследовать их подробно):
Первое, что обращает на себя наше внимание, это то, что Java является интерпретируемым языком. Не смотря на то, что исходные коды java требуют предварительной компиляции для создания объектного файла в байт-кодах, которые уже являются кодом низкого уровня, их необходимо интерпретировать на различных платформах. Благодаря байт-кодам Java мы можем "написать единожды и исполнять везде". Мы можем компилировать Java программы на одной платформе и исполнять их на другой, совершенно иной архитектуре, которая имеет виртуальную машину Java (JVM). Например, Java программа может быть скомпилирована на платформе Windows NT и быть выполненной без всяких проблем (по крайней мере в теории) на Sun Ultra Solaris. В общих чертах, платформой является программно-аппаратная среда, в которой выполняется приложение. Однако для Java платформа является только программной средой, где она выполняется, поэтому каждая Java-платформа должна выполняться на аппаратной платформе. Платформа Java состоит из двух компонент:
JVM является абстрактным компьютером, в котором могут выполняться предварительно откомпилированные Java программы. Ее старались разработана простой и маленькой, поскольку идея состояла в том, чтобы установить ее где только можно. Эта простота сделала возможным ее распространение на всех существующих платформах, тем самым предоставив для всех общий программный слой и в очень разнородных сетях (таких, как Интернет) она решает большое количество проблем с совместимостью. Как представляется, это наиболее вероятная причина для непрерывного роста этой технологии. Тем не менее, виртуальная машина не должна рассматриваться как программный слой, но, как указывает ее имя, она пытается быть полной компьютерной системой, потихоньку мы начнем наблюдать появление микросхем Java, которые поддерживают реальные машины Java, кредитные карточки, телевизионные декодеры и т.д. Интерфейс программирования приложений Java является большой коллекцией программных компонент, которые предоставляют некоторое количество утилит, таких как графический пользовательский интерфейс (GUI). Они сгруппированы в библиотеки (Java-пакеты, если пользоваться терминологией Java). Именно благодаря этим пакетам возможно использование Java для многих приложений, помимо хорошо известных апплет для Интернета, мы можем создавать веб-сервера, например прокси-, почтовые и IRC сервера, и практически все, что мы сможем представить, связанное с Интернет. Мы можем классифицировать пакеты API по различным группам:
Помимо этого основного ядра API, также существуют 3D расширения, мобильные коммуникации, анимации и т.д. В начале этого раздела мы упомянули, что Java обладает серией характеристик, которые мы изучим подробно:
После столь долгого "спича" (большую часть которого можно найти в официальной документации Java), можно задуматься о статусе Java в мире GNU/Linux. Ранее мы говорили о наличии JDK для Linux, который является ничем иным, как коммерческим вариантом, разработанным Sun Microsystems (хотя и свободно распространяемый). Существуют такие средства, как компилятор GUAVAC, распространяемый по лицензии GPL, который позволяет безболезненно компилировать любой исходный текст Java. Мы также должны упомянуть о виртуальной машине, называемой KAFFE, распространяемой по лицензии Berkeley. Два последних проекта находятся на очень продвинутой стадии, хотя для законченности системы разработки им все еще требуются библиотеки классов Java от Sun (свободно распространяемые на данный момент). Несколько недавних проектов, все еще на своей ранней стадии, нацелены на создание среды разработки для быстрых и визуальных приложений. И наконец, я бы хотел сказать, что существует большое движение в сети, касающееся технологий Java и GNU, особенно это касается разработки свободно распространяемого полного пакета средств для Java, независимого от Sun. Мы уже должны понимать важность Java, и когда пройдет мода, я уверен, от этого что-нибудь останется (я бы даже сказал останется очень многое). Первая программа на JAVAПосле рассмотрения основных характеристик языка давайте взглянем на настоящую программу. Как я уже говорил в вступлении, я хотел бы как можно дальше держаться от привычного материала, такого как пример программы hello world, вместо этого давайте начнем с программы, которая рисует квадраты с любыми заданными размерами (немного сложновато, но не слишком): class Cuadro { public static void main (String args[]) { int l ,a; if (args.length == 2) { l = Integer.valueOf(args[0]).intValue(); a = Integer.valueOf(args[1]).intValue(); } else { l= 20; a= 15; } for (int i=l; i>0; i--){ System.out.print("*"); } System.out.print("\n"); for (int i= a-2; i>0; i--){ System.out.print("*"); for(int j=l-2; j>0; j--) { System.out.print(" "); } System.out.print("*\n"); } for (int i=l; i>0; i--){ System.out.print("*"); } System.out.print("\n"); } } В Java имя, даваемое файлу с исходным кодом, очень важно потому, что оно определяет "единицу компиляции". Файл может содержать одно или более определений классов. Компилятор ожидает, что файл с исходными кодами имеет расширение .Java (4 символа), чего некоторые системы не поддерживают (DOS или Windows 3.1) В приведенном примере имя определенного класса совпадает с именем файла с исходным кодом. Это не совпадение, в Java весь код должен содержаться в классе. По соглашению, имя класса должно совпадать с именем файла с исходным кодом, содержащим класс.. Более того, Java учитывает регистр (верхний или нижний). Для компиляции примера в командной строке напечатайте: > javac Cuadro.javaКомпилятор Java (если все прошло нормально), создаст файл Cuadro.class, который обычно является бинарным (байт-кодами) и может быть немедленно выполнен интерпретатором: > java CuadroКогда компилируется исходный код java, каждый класс размещается в архиве с именем класса. Поэтому считается хорошим тоном давать файлам с исходным кодом имена классов, содержащихся в них, с тем, чтобы имя файла с исходным кодом совпадало с файлом archive.class. Несмотря на простоту нашего примера, Cuadro.java, он помогает нам понять фундаментальные понятия Java и, в частности, структу обычной java-программы. Прежде всего, учтем, что этот пример не является апплетом, который может быть включен в файл HTML, а независимой программой, которую должен исполнять java-интерпретатор в командной строке. Первая строка программы: class Cuadro { Первое слово является зарезервированным token языка, оно указывает на определение нового класса с названием, в данном случае, "Cuadro" -- квадратный по-испански -- Точное определение класса, включая всех его членов, заключено в двух фигурных скобках {}. Заметьте, что в Java вся деятельность программ заключена внутри класса. В следующей строке: public static void main (String args[]) { она объявляет метод с именем main(). Все приложения Java начинают свое выполнение с метода с именем main() (как в C/C++). Далее, позвольте мне прокомментировать некоторые детали, необходимые для понимания этого примера (в более поздних статьях мы объясним их более подробно). Ключевое слово public управляет областью видимости методов-членов класса. Если класс объявлен как public, то класс может быть использован кодом, определенным вне класса. Ключевое слово static вынуждает метод main() выполняться без инициализации класса. Void указывает, что этот метод ничего не возвращает. Для передачи параметров функции или методу можно использовать круглые скобки после имени функции, в нашем примере main принимает в качестве параметра массив величин класса String. Очевидно, что весь код, принадлежащий методу, также заключен в фигурные скобки. Далее, в строке: int l, a ; мы объявляем две целые переменные. В Java каждая переменная должна быть объявлена до того, как ее можно будет использовать. Заметьте, каждый оператор в коде заканчивается точкой с запятой ";". Остальная часть кода реализует небольшой алгоритм, который:
Прекрасное домашнее задание читателю - используя этот код, проверьте, как он будет компилироваться и исполняться, а также проверьте переносимость кода, запустите откомпилированный объект Cuadro.class на различных платформах: Linux, windows 95 (только не считайте это подарком!) и посмотрите, работает ли он одинаково на всех платформах. Подведение итоговМы прошлись по некоторым из основных черт Java как языка программирования. Мы только начали программировать и перед нами очень долгая дорога, будущие выпуски будут давать более глубокое описание этого языка. В следующей статье мы изучим определения и типы переменных, основные инструкции, классы и т.д. Основное описание языка. В каждой статье я давать ссылки на печатные издания и URL, на базе которых я создал эту серию статей.
Translated by Miguel A Sepulveda Перевод на русский: Владимир Попов |
This website is maintained by Miguel Angel Sepulveda © Jose M. Fernandez 1998 LinuxFocus 1998 |