Сегодня самой быстро развивающейся технологией
компьютерной индустрии становится технология Java. Технология
Java появилась на волне огромного интереса к глобальной сети
Интернет и Web. Эта технология была разработана в стенах Sun
Microsystems и опирается на новый язык объектно ориентированного
программирования Java. В основе Java лежат два принципа -
независимость от программно-аппаратной платформы (операционная
система плюс процессор) и безопасность создаваемых приложений.
Первый принцип реализуется через механизм виртуальной машины Java
(Virtual Java Machine - JVM). Второй - прежде всего за счёт самого
языка, который включает строгую типизацию, запрет адресной
арифметики, автоматическую сборку "мусора".
На языке Java могут создаваться как автономные программы,
так и так называемые апплеты - небольшие блоки кода, которые
загружаются из Интернета в Web-браузер и исполняются. Java
поддерживают Netscape Navigator начиная с версии 2.0 и Microsoft
Internet Explorer начиная с версии 3.0.
Синтаксис языка Java во многом похож на С++, но идеология
языка совершенно другая. В отличие от многих других языков,
компилятор Java компилирует исходные тексты не в двоичный код
конкретного процессора, а в код виртуальной машины Java (JVM).
При исполнении этого кода происходит либо интерпретация этого
кода, как подразумевалось с самого начала и используется в
бесплатном комплекте разработчика Java фирмы Sun Microsystems,
либо компиляция байт-кода JVM в код конкретного процессора в
момент вызова класса на исполнение (just-in-time), как сделано во
многих коммерческих приложениях и в новых Web-браузерах. Во
втором случае Java программы работают существенно быстрее - но
увеличивается время загрузки, так как в процессе загрузки
осуществляется компиляция.
Бесплатный комплект разработчика Java (Java Development
Kit - JDK) фирмы Sun Microsystems распостраняется через Интернет
http://java.sun.com, также его можно найти на различных
компакт-дисках. JDK версии 1.0 появился в январе 1996 года, то
есть официально языку Java сейчас чуть больше двух лет. У нас на
кафедре проинсталирован JDK версии 1.0.1. Sun Microsystems
предлагает варианты JDK для различных платформ - Windows,
Macintosh, различных UNIX-систем. Получается, что если вы
напишите программу на Java, то она будет адекватно работать на
любой из этих платформ. Вариант JDK для Windows-95
распостраняется в самораспакующемся zip-файле, который содержит
длинные имена файлов. Размер JDK 1.0 составлял 3.7 Мбайт, а
версии 1.0.1 - уже 4.3 Мбайт. В JDK входят основные средства
разработки приложений - компилятор, отладчик, интерпретатор
автономных программ, просмотрщик апплетов и др. Также там есть
стандартная библиотека классов и много примеров Java-программ с
комментариями. К сожалению в JDK нет документации и средств
помощи. При распаковке JDK создаётся каталог JAVA, а в нём
несколько подкаталогов. В подкаталоге DEMO располагаются примеры
программ, в подкаталоге LIB - библиотека классов в zip-архиве.
В подкаталоге BIN располагаются все исполняемые файлы, в том числе:
- javac.exe - компилятор Java,
- java.exe - интерпретатор автономных программ,
- appletviewer.exe - просмотрщик апплетов.
Все исполняемые файлы принимают параметры из командной
строки и выводят информацию на консоль, поэтому ими удобно
пользоваться в окне сессии DOS. Исходный текст программы на
языке Java должен быть сохранён в файле с расширением test.java.
В одном файле могут быть описаны несколько классов. Для
компиляции нужно запустить компилятор с одним параметром -
именем файла: javac test.java. При этом каждый класс будет
откомпилирован в свой файл кодов с таким же именем, что и имя
класса. Файл кодов класса имеет расширение *.class.
Как я уже говорил в Java возможно два варианта создания
программ: автономная программа и апплет. Автономная программа
запускается Java-интерпретатором java.exe. А апплет может быть
помещён в Интернет и запущен любым браузером, поддерживающим
Java. В JDK для просмотра апплетов есть программа
appletviewer.exe.
World Wide Web сегодня является самым
популярным ресурсом Интернета, поэтому создатели Java
ориентировались именно на него. Для представления гипертекстовой
информации в WWW используется язык гипертекстовой разметки HTML.
Формат документа HTML следующий:
Для тестирования апплета с помощью appletviewer.exe требуется
создать минимальный HTML файл:
Назовём его например example.htm. Тогда для запуска апплета
HelloJava требуется в командной строке записать
appletviewer example.htm и исполнить.
Чтобы показать отличие апплетов от автономных программ я
приведу два примера:
Итак апплет - это класс, расширяющий класс Applet, а автономная
программа - класс, имеющий метод main.
Разберём текст примеров. Первые две строки - это
команды import. С помощью них вы сообщаете компилятору о том,
какие классы вы будете использовать в своей программе.
Стандартная библиотека классов, как я уже говорил, находится в
подкаталоге LIB в файле classes.zip. Если заглянуть в него, то
можно увидеть иерархию классов:
Например, если в программе вы используете объекты классов
Image и Graphics, можно написать:
import java.awt.Font;
import java.awt.Graphics;
или проще:
import java.awt.*;
или можно поставить полное имя класса в тексте программы:
С помощью ключевого слова extends реализуется наследование.
В Java нет множественного наследования - у класса может быть
только один родительский класс. Родительский класс в Java
называется суперклассом, а дочерний класс - подклассом.
Функции описываются внутри класса, функция paint является
стандартным методом апплета и вызывается, когда требуется
перерисовать окно апплета. Ключевое слово public означает, что,
в одном случае, класс является общедоступным, а в другом - метод
класса является общедоступным.
Изменим код апплета:
Здесь можно увидеть как создаётся объект какого-то класса.
В классе должен быть описан соответствующий конструктор.
Обратите внимание на константу Font.BOLD - в Java константы
класса также описываются внутри класса следующим образом:
public static final int BOLD = 1;
Слово public означает, что BOLD является доступным.
Слово static означает, что BOLD единственный для всех объектов
класса. Слово final означает, что BOLD не будет меняться.
И int - тип, BOLD - имя.
В Java отсутствуют указатели и адресная арифметика.
Однако запись Graphics g означает, что объект передаётся по
ссылке. По ссылке в Java передаются объекты классов и массивы. По
значению передаются только переменные стандартных типов.
В Java стандартными являются те же типы, что и в С++, но
есть некоторые отличия:
- добавлен тип boolean (true,false);
- добавлен тип byte (от -128 до 127);
- тип char является 16-битным (unicode);
- тип int является 32-битным;
- тип long является 64-битным.
Массивы в Java выделяются также как и объекты - с
помощью слова new: int a[] = new int[100]; Следует отметить,
что выделенную таким способом память освобождать не нужно -
после того, как на эту область памяти перестанет что-либо
ссылаться, она будет освобождена сборщиком "мусора".
Из библиотечных классов наиболее употребимым является
класс String. Строки в Java можно складывать:
String s1 = "aaa";
String s2 = "bbb " + s1 + " ccc";
Интересно, что в выражение со строками можно записывать
переменные других типов:
int i = 10;
double d = 3.14;
String s3 = "i=" + i + "d=" + d + "100=" + 100;
Это вызвано тем, что каждому простому типу данных
соответствует библиотечный класс. Например типу char
соответствует класс Character, типу int - Integer, типу float -
Float и т.д. В каждом из этих классов есть метод toString(),
приводящий тип к строке.
Вообще метод toString() есть в каждом библиотечном
классе - в сложных объектах в строку выводятся только основные
параметры.
В языке Java неявным предком всех объектов считается
класс Object, в котором есть простейшая реализация метода
toString().