русс | укр

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

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Space.sunsystem.Test


Дата добавления: 2015-06-12; просмотров: 549; Нарушение авторских прав


хранится в файлах

space\sunsystem\Moon.]ava

space\sunsystem\Sun.java

space\sunsystem\Test.java

а бинарный код — в соответствующих .class-файлах. Обратите внимание, что преобразование имен пакетов в файловые пути потребовало замены разделителя . (точки) на символ-разделитель файлов (для Windows это об­ратный слэш \). Такое преобразование может выполнить как компилятор для поиска исходных текстов и бинарного кода, так и виртуальная маши­на для загрузки классов и интерфейсов.

Обратите внимание, что было бы ошибкой запускать Java прямо из папки space\sunsystem и пытаться обращаться к классу Test, несмотря на то, что файл-описание лежит именно в ней. Необходимо подняться на два уровня каталогов выше, чтобы Java, построив путь из имени пакета, смогла обнаружить нужный файл.

Кроме того, немаловажно, что Java всегда различает регистр иденти­фикаторов, а значит, названия файлов и каталогов должны точно отвечать запрограммированным именам. Хотя в некоторых случаях операционная система может обеспечить доступ, невзирая на регистр, при изменении обстоятельств расхождения могут привести к сбоям.

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

Какие файлы доступны для утилит Java SDK (компилятора, интер­претатора и т.д.), устанавливается на уровне операционной системы, ведь утилиты — это обычные программы, которые выполняются под уп­равлением ОС и, конечно, следуют ее правилам. Например, если пакет содержит один тип, но описывающий его файл недоступен текущему пользователю ОС для чтения, для Java этот тип и этот пакет не будут су­ществовать.



Понятно, что далеко не всегда удобно хранить все файлы в одном каталоге. Зачастую классы находятся в разных местах, а некоторые мо­гут даже распространяться в виде архивов, для ускорения загрузки через сеть. Копировать все такие файлы в одну папку было бы крайне затруд­нительно.

Поэтому Java использует специальную переменную окружения, кото­рая называется classpath. Аналогично тому, как переменная path помогает системе находить и загружать динамические библиотеки, эта переменная помогает работать с Java-классами. Ее значение должно состоять из путей к тапогам или архивам, разделенных точкой с запятой. С версии 1.1 подверчиваются архивы типов ZIP и JAR (Java ARchive) - специальный формат. Разработанный на основе ZIP для Java.

Например, переменная classpath может иметь такое значение: .;c:\java\classes;d:\lib\3Dengine.zip;d:\lib\fire.jar

В результате все указанные каталоги и содержимое всех архивов "до­бавляется" к исходному корневому каталогу. Java в поисках класса будет искать его по описанному выше правилу во всех указанных папках и ар­хивах по порядку. Обратите внимание, что первым в переменной указан текущий каталог (представлен точкой). Это делается для того, чтобы по­иск всегда начинался с исходного корневого каталога. Конечно, такая за­пись не является обязательной и делается на усмотрение разработчика.

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

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

Наконец, можно применять и альтернативные подходы к хранению пакетов и файлов с исходным и бинарным кодом. Например, в качестве такого хранилища может использоваться база данных. Более того, суще­ствует ограничение на размещение объявлений классов в .java-файлах, которое рассматривается ниже, а при использовании БД любые ограни­чения можно снять. Тем не менее, при таком подходе рекомендуется пре­доставлять утилиты импорта/экспорта с учетом ограничения для преоб­разований из/в файлы.



<== предыдущая лекция | следующая лекция ==>
Область видимости (введение) | Модуль компиляции


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.35 сек.