Владимир Цишевский - Java как центр архипелага
- Название:Java как центр архипелага
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:1996
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Владимир Цишевский - Java как центр архипелага краткое содержание
Java как центр архипелага - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
ресурсов; аналог деструктора, но не вызывается автоматически; всегда
вызывает stop(); всегда вызывается при выходе из навигатора и при
перезагрузке аплета.
Простейший аплет выглядит так:
1 import java.awt.Graphics;
2 import java.applet.Applet;
3 class SimpleApplet extends Applet {
4 public void paint (Graphics g) {
5 g.drawString ("Hello world!", 10, 10);
6 }
7 }
Метод public void paint (Graphics g) (строки 4-6) определяет,
как аплет перерисовывает себя в тот момент, когда оконный ме-
неджер посылает WWW-навигатору запрос на перерисовку.
Включение аплета в WWW-страницу производится следующим образом.
В языке HTML 2.0 предусмотрены специальные конструкции
и . Первая из них задает имя загружаемого класса и раз-
меры области в окне навигатора, выделяемой аплету. Конструкция
служит для передачи информации с WWW-страницы в ту сре-
ду, в которой будет выполняться аплет.
Ниже приведен простой пример вкллючения аплета в WWW-страницу.
Если вы видите этот текст, то ваш навигатор не поддерживает Java
Поскольку WWW-навигаторы игнорируют неизвестные конструкции, в
навигаторе, не поддерживающем Java, будет виден текст
--------------------------------------------------------------------------
Если вы видите этот текст, то ваш навигатор не поддерживает Java
--------------------------------------------------------------------------
Опросить значения, передаваемые с помощью конструкции , можно
следующим образом:
public void init () {
String fontname = getParameter ("name");
String fontSizestring = getParameter ("size");
int theSize = Int.parseInt (fontSizeString);
. . .
}
4.2.2. Java-машина
Java-компилятор переводит транслирует исходные тексты Java-
программ в коды Java-машины. Вообще говоря, Java-машина являет-
ся виртуальной в том смысле, что она не существует в виде ре-
альных микросхем и других устройств, а представляет собой прог-
раммный эмулятор, выполняющийся на какой-либо традиционной ап-
паратной платформе. Вероятно, уже в ближайшее время следует
ожидать появления и все более широкого распространения и прямых
аппаратных реализаций Java-машины.
Идея языковых процессоров, разумеется, не нова. Известны попыт-
ки внедрить так называемый P-код в качестве стандарта на ре-
зультат работы Паскаль-компиляторов; в свое время много писали
о языке и машине Форт; была выполнена аппаратная реализация ре-
фал-машины, и список этот можно продолжать и продолжать.
В контексте проекта Java спецификация виртуальной машины явля-
ется частью комплекса мер, направленных на стандартизацию Java-
среды и на обеспечение ее независимости от аппаратно-программ-
ной платформы. Кроме того, следует учитывать ту специфическую
среду, в которой должны готовиться и работать Java-программы.
Если Web-страница содержит Java-аплеты, эти аплеты будут пере-
даваться по сети. Значит, весьма желательно, чтобы Java-код был
как можно более компактным; в противном случае время загрузки
страницы рискует стать раздражающе большим. Соответственно, ар-
хитектура и система команд Java-машины проектировались таким
образом, чтобы всячески способствовать компактификации кода. С
другой стороны, формат команд Java-машины довольно прост (обыч-
но команды не имеют операндов и занимают один байт), поэтому
возможна ее (машины) эффективная эмуляция. По этой причине
программы, подготовленные для выполнения на Java-машине, часто
называют байт-кодами.
Мы опишем архитектуру Java-машины довольно кратко. Последующее
изложение опирается на версию спецификаций 1.0.
4.2.2.1. Типы данных, поддерживаемые Java-машиной
Java-машина поддерживает следующие стандартные типы данных:
- byte - однобайтные целые цисла в двоичном дополнительном коде;
- short - двухбайтные целые числа;
- int - четырехбайтные целые числа;
- long - восьмибайтные целые числа;
- float - четырехбайтные вещественные числа в формате IEEE-754;
- double - восьмибайтные вещественные числа;
- char - двухбайтные беззнаковые символы в кодировке Unicode.
Поскольку Java-компилятор в состоянии проверить типы данных во
время трансляции, при выполнении нет нужды ассоциировать допол-
нительную информацию со значениями стандартных типов. Вместо
этого генерируются команды, рассчитанные на обработку данных
определенных типов. Например, для сложения целых чисел будет
сгенерирована команда iadd, а для сложения вещественных чисел
двойной точности - команда dadd.
Значения типа boolean представляются однобайтными целыми числа-
ми и обрабатываются посредством соответствующих команд.
Имеется еще два стандартных типа данных:
- object - четырехбайтная ссылка на об®ект (массивы трактуются
как об®екты);
- returnAddress - четырехбайтный адрес возврата из метода.
Спецификации Java-машины не описывают внутренней структуры об-
®ектов. В реализации Sun Microsystems значение типа object ука-
зывает на описатель, хранящий две ссылки - на таблицу методов и
на данные об®екта. Возможны и другие представления.
Java-машина является 32-разрядной. Более длинные значения
(long, double) представляются как пара четырехбайтных величин.
Не оговоривается, в каком порядке располагаются элементы пары;
более того, верификатор байт-кодов обязан выявлять и отвергать
программы, пытающиеся "вручную" составлять длинные значения.
4.2.2.2. Регистры
В Java-машине должны поддерживаться следующие регистры:
- pc - счетчик команд; указывает на код операции для команды,
которая будет выполняться следующей.
- vars - базовый регистр для доступа к локальным переменным те-
кущего метода.
- optop - указатель на вершину стека операндов. Java-машина яв-
ляется стековой, поэтому основная часть команд берет операнды
из стека и туда же помещает результат.
- frame - указатель на структуру, содержащую окружение времени
выполнения.
В свою очередь, окружение времени выполнения используется для
реализации трех целей: динамической загрузки, возврата из мето-
дов и обработки исключительных ситуаций.
Для обеспечения динамической загрузки, окружение времени выпол-
нения содержит ссылки на таблицу сивмолов текущего метода и те-
кущего класса. Перед началом выполнения метода выполняется ре-
дактирование его внешних связей (настройка ссылок на внешние
методы и внешние данные). Подобная поздняя настройка ссылок де-
лает сгенерированный код устойчивым по отношению к изменениям
во внешних классах.
Для обеспечения нормального возврата из методов выполняется
восстановление регистрового окружения вызывающего метода.
Для обработки исключительных ситуаций Java-машина выполняет
проход по стеку вызова методов и отыскивает самую внутреннюю
конструкцию catch, обрабатывающую случившееся событие.
В принципе окружение времени выполнения может содержать допол-
Читать дальшеИнтервал:
Закладка: