Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Язык программирования JAVA.pdf
Скачиваний:
278
Добавлен:
02.05.2014
Размер:
2.57 Mб
Скачать

converted to PDF by BoJIoc

class Date2 {

public static void main(String[] args) { Date now = new Date(); System.out.println(now);

}

}

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

таких соглашений в качестве префикса имени пакета используется перевернутое имя домена организации в Internet. Например, если фирма Acme Corporation содержит в Internet домен с именем acme.com, то разработанные ей пакеты будут иметь имена типа

COM.acme.package.

Точки, разделяющие компоненты имени пакета, иногда могут привести к недоразумениям,

поскольку те же самые точки используются при вызове методов и доступе к полям в ссылках на объекты. Возникает вопрос что же именно импортируется? Новички часто пытаются импортировать объект System.out, чтобы не вводить его имя перед каждым вызовом println. Такой вариант не проходит, поскольку System является классом, а out — его статическим полем, тип которого поддерживается методом println.

С другой стороны, java.util является пакетом, так что допускается импортирование java.util.Date (или java.util.*, если вы хотите импортировать все содержимое пакета). Если у вас возникают проблемы с импортированием чего-либо, остановитесь и убедитесь в том, что вы импортируете тип.

Классы Java всегда объединяются в пакеты. Имя пакета задается в начале файла: package com.sun.games;

class Card

{

// ...

}

// ...

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

1.14. Инфраструктура Java

Язык Java разработан так, чтобы обеспечивать максимальную переносимость. Многие аспекты Java определяются сразу для всех возможных реализаций. Например, тип int всегда должен представлять собой 32-разрядное целое со знаком с дополнением по модулю 2. Во многих языках программирования точные определения типов являются уделом конкретной реализации; на уровне языка даются лишь общие гарантии, такие как минимальный диапазон чисел данного типа или возможность системного запроса, позволяющего определить диапазон на данной платформе.

В языке Java такие требования продвинуты вплоть до уровня машинного языка, на который транслируется текст программ. Исходный текст программы на Java компилируется в байт-код, выполняемый на виртуальной машине Java. Байт-код является

converted to PDF by BoJIoc

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

Виртуальная машина присваивает каждому приложению собственный контекст времени выполнения (runtime), который одновременно изолирует приложения друг от друга и обеспечивает безопасность работы. Менеджер безопасности каждого контекста времени выполнения определяет, какие возможности доступны данному приложению. Например,

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

В совокупности все эти средства делают язык Java полностью платформонезависимым и

предоставляют схему безопасности для выполнения переданного по сети кода на различных уровнях доверия (trust levels). Исходный текст Java, скомпилированный в байт-код Java, может выполняться на любом компьютере, где имеется виртуальная машина Java. Код может выполняться на соответствующем уровне защиты, чтобы предотвратить случайное или злонамеренное повреждение системы. Уровень доверия регулируется в зависимости от источника байт-кода байт-код на локальном диске или в защищенной сети пользуется большим доверием, чем байт-код, полученный с удаленного компьютера, неизвестно даже где расположенного.

1.15. Прочее

Java содержит ряд других возможностей, которые кратко упоминаются здесь и рассматриваются в следующих главах:

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

объектам и данным класса используется блокировка на уровне объектов и на уровне классов. Подробности приведены в главе 9.

Ввод/вывод: Java содержит пакет java.io, предназначенный для выполнения разнообразных операций ввода/вывода. Конкретные возможности ввода/вывода описаны в главе 11.

Классы общего назначения: в состав Java входят классы, представляющие многие примитивные типы данных (такие, как Integer, Double и Boolean), а также класс Class для работы с различными типами классов. Программирование с использованием типов рассматривается в главе 13.

Вспомогательные классы и интерфейсы: Java содержит пакет java.util со множеством полезных классов таких, как BitSet, Vector, Stack и Date. Более подробно о вспомогательных классах рассказывается в главе 12.