JVC.EXE (JVC) — компилятор Microsoft для Java. По умолчанию формирует файлы с расширением
CLASS, выполняемые на любой виртуальной машине Java. Однако JVC позволяет создавать
и приложения, оптимизированные для Windows-платформ. Подробнее о создании Windows-приложений
в Visual J++ см. главу 19 «Написание Windows-приложений с использованием
J/Direct».
Параметры
компилятора для своего проекта Вы указываете на вкладке Compile диалогового
окна свойств проекта; там же — в поле Additional compiler options — можно
задать и дополнительные параметры компиляции. Подробнее на эту тему см. раздел
«Настройка параметров компилятора» главы 1 «Создание проектов».
Справочную
информацию по параметрам командной строки JVC см. в разделе «Параметры
командной строки JVC» далее в этой главе.
Синтаксис
командной строки JVC
В командной
строке JVC.EXE (JVC) используется следующий синтаксис: JVC [параметры] <имя_файла>
Элемент |
Описание |
||
параметры |
Один или несколько
параметров JVC. Подробнее см. раздел «Настройка параметров проекта»
главы 1 «Создание проектов» и раздел «Параметры командной
строки JVC» далее в этой главе. Примечание Любой параметр действует на все заданные исходные файлы. |
||
имя_файла |
Имя одного или нескольких исходных файлов. Подробнее о допустимых именах файлов см. ниже. |
||
Вы можете
указать любое количество параметров и имен файлов, но общее число символов в
командной строке не должно превышать 1 024 или другого предельного значения,
диктуемого данной операционной системой.
Примечание
Будущие версии Microsoft Windows, возможно, не будут ограничивать длину командной строки 1024 символами.
Любые параметры,
передаваемые JVC, должны предшествовать именам JAVA-файлов.
Синтаксис
имен файлов
JVC требует
следующего синтаксиса имен файлов:
Частичный
путь не содержит имени диска; JVC в этом случае использует текущий диск. Если
путь вообще не указан, JVC ищет файл в текущем каталоге.
Примечание
Если у файла нет расширения, то JVC рассматривает его как файл с расширением
JAVA.
JVC.EXE обеспечивает
компиляцию исходных JAVA-файлов в CLASS-файлы, выполняемые виртуальной машиной
Java. Если Вам нужна лишь синтаксическая проверка исходного текста программы,
используйте параметр /nowrite — тогда CLASS-файлы не создаются. Параметры
JVC можно задать как из командной строки, так и из среды программирования. Если
Вы компилируете Java-проект в среде Visual J + +, укажите требуемые параметры
JVC в поле Additional compiler options на вкладке Compile. А если
Вы компилируете Java-проект из командной строки, задайте параметры JVC в командной
строке перед именами JAVA-файлов.
Порядок
параметров JVC
Параметры
командной строки компилятора JVC должны предшествовать именам исходных JAVA-файлов.
JVC считывает командную строку слева направо и последовательно обрабатывает
параметры. Любой параметр действует на все файлы, указанные в командной строке.
Если JVC обнаруживает конфликтующие параметры, приоритет отдается тому из них,
который расположен правее.
Командный
файл — это текстовый файл со списком имен файлов, который иначе пришлось бы
набирать в командной строке. JVC принимает его как аргумент в командной строке.
Используя командные файлы, учитывайте следующие требования:
В командной
строке JVC командный файл идентифицируется символом @, за которым следует имя
этого файла (оно может включать абсолютный или относительный путь).
Переменная
окружения CLASSPATH
Переменная
окружения CLASSPATH определяет местонахождение CLASS-файлов по умолчанию.
Компилятор Java (JVC), средства просмотра (JView и WJView) и виртуальные машины
используют информацию, содержащуюся в переменной окружения CLASSPATH, при
компиляции и запуске Java-программ. Если компиляция осуществляется из командной
строки, указывайте параметры /ср:р и /ср:а — они позволяют расширять информацию,
которая хранится в CLASSPATH.
Примечание
Параметры JVC, JView и WJView действуют только в рамках текущей компиляции;
их надо указывать при каждом запуске этих средств.
Новое значение
CLASSPATH, установленное из командной строки, действует до перезагрузки
операционной системы. Однако параметры /ср, /ср:р и /ср:а компилятора
JVC и средств просмотра JView и WJView позволяют модифицировать или подменять
переменную окружения CLASSPATH на время компиляции или просмотра Java-программы.
Примечание
В Microsoft Windows каталоги в CLASSPATH отделяются точкой
с запятой.
Присваивая
значение переменной окружения CLASSPATH из командной строки, используйте
такой синтаксис: SET CLASSPATH = <путь>
CLASSPATH
и Java Package Manager (JPM)
При установке
виртуальная машина Java регистрирует информацию о всех Java-пакетах с помощью
Java Package Manager (JPM) и вносит в раздел реестра HKEY_LOCAL_ MACHINE\Software\Microsoft\Java
VM\Classpath
следующие значения CLASSPATH:
Windows 95
C:\WIN95\java\classes\classes.zip; C:\WIN95\java\classes;.;
Window NT
C:\WINNT\java\classes\classes.zip; C:\WINNT\java\classes;.;
При запуске
Java-программ виртуальная машина, отыскивая файлы с расширением CLASS, просматривает
источники, указанные ниже и именно в таком порядке.
Примечание
Чтобы указать пути для JVC, JView и WJView, используйте параметры
/ср, /ср:р и /ср:а.
Примечание
Раздел реестра DevClasspath позволяет разработчикам, создающим
новые пакеты, замещать уже установленные в базе данных JPM. Благодаря этому
они могут собирать свои пакеты в отдельном каталоге, а пакеты, зарегистрированные
в JPM, не конфликтуют с первыми. Подробнее о Java Package Manager см. его документацию.
Примечание
Если Ваша программа запускается из среды Visual J++, то виртуальная
машина при поиске CLASS-файлов учитывает информацию, введенную на вкладке Classpath
диалогового окна свойств проекта, открываемого из меню Project. Подробнее
о Java Package Manager см. его документацию.
Параметры
командной строки JVC
Здесь рассмотрены
все параметры командной строки JVC (в алфавитном порядке). Они сведены в таблицу,
представленную ниже. Если параметр командной строки допускает один или несколько
аргументов, его синтаксис показывается под заголовком «Синтаксис».
Допустимые
параметры командной строки JVC |
|||||
/ср — установка |
/gv
— генерация |
/nowrite — |
/verbose — |
||
CLASSPATH |
отладочной информации |
установка режима
компиляции без записи |
включение вывода
сообщений компилятора |
||
/cр:о — вывод
содержимого |
/g:l — генерация
информации о |
/О — включение
оптимизации |
/w — установка |
||
CLASSPATH |
номерах строк |
|
уровня предупреждений |
||
/ср:р — добавление
пути перед путями, заданными |
/g:t — генерация
отладочных таблиц |
/О:I — оптимизация
подстановкой кода методов |
/х — отключение
расширений |
||
в CLASSPATH |
|
|
языка |
||
/d — определение |
/nologo — подав- |
/O:J — оптими- |
/? — вывод |
||
выходного каталога |
ление вывода
эмблемы с авторскими правами |
зация переходов
в байтовом коде |
подсказки по
списку параметров |
||
/D — определение
символа условной компиляции |
/nowarn — подавление
вывода предупреждений |
/ref — перекомпиляция
используемых классов |
|
||
Все перечисленные
здесь параметры можно задать в иоле Additional compiler options на вкладке
Compile диалогового окна свойств проекта, открываемого из меню Project,
или в командной строке перед именами исходных файлов.
/ср
- установка CLASSPATH (JVC)
Синтаксис
/ср
пути_к_классам
Позволяет
задавать пути к классам для текущей компиляции. Он определяет путь, по которому
JVC ищет системные и пользовательские классы. Виртуальная машина Java при поиске
системных классов использует переменную окружения CLASSPATH и Java Package
Manager. Подробнее о Java Package Manager см. его документацию в Microsoft SDK
for Java.
Примечание
В Microsoft Windows каталоги в CLASSPATH отделяются точкой с запятой.
Пример
При компиляции
файла myClass.java в Windows NT (версии 4.0 или выше) путь к классу может быть
таким:
JVC /ср х:.;x:\java\classes
myClass.Java
В этом примере
JVC ищет системные и пользовательские классы в текущем каталоге и его подкаталогах,
а также в каталоге x:\java\classes.
/ср:о
- вывод содержимого CLASSPATH (JVC)
Заставляет
компилятор вывести содержимое CLASSPATH на стандартное устройство вывода.
Он особенно полезен при выявлении таких ошибок, как «class not found»
(класс не найден) — они возникают при компиляции из командной строки.
Пример
В следующем примере пути к классам выводятся на экран:
JVC
/cp:o
/ср:р
— добавление пути перед путями, заданными в CLASSPATH (JVC)
Синтаксис
/ср:р
путь
Добавляет
путь перед путями, содержащимися в переменной окружения CLASSPATH, и
отделяет его точкой с запятой. Если указано несколько параметров /ср:р, пути
объединяются.
Примечание
Переменная окружения CLASSPATH ил'и параметр /ср указывают
местонахождение CLASS-файлов. Описание этой переменной см. в разделе «Переменная
окружения CLASSPATH» ранее в этой главе.
Пример
Следующая
команда вставляет каталог myproj перед уже существующими путями к классам:
JVC /ср:р myproj
А эта команда
вставляет перед путями, указанными в переменной окружения CLASSPATH, каталоги
myprojl и myproj2:
JVC /cp:p myprojl
/cp:p myproj2
/d
- определение выходного каталога (JVC)
Синтаксис
IA
каталог
При компиляции
JAVA-файлов позволяет задать отличный от текущего выходной каталог для CLASS-файлов.
Если такого каталога нет, JVC его создает. Если данный параметр опущен, JVC
сохраняет CLASS-файлы в каталогах, содержащих соответствующие JAVA-файлы.
Пример
Следующая
команда компилирует файл myClass.java в файл myClass.class и сохраняет конечный
файл в каталоге classdir:
JVC /d c:\classdir
myClass.java
Внимание
Виртуальная машина Java полагается на присутствие специфических каталогов
Java-классов, имена которых формируются по именам Java-пакетов с CLASS-файлами.
Использование этого параметра приведет к ошибке, если виртуальная машина не
найдет классов, нужных для запуска Java-программы. О том, как виртуальная машина
ищет CLASS-файЛы, см. раздел «Переменная окружения CLASSPATH» ранее
н этой главе.
/D
- определение символа условной компиляции
Синтаксис
/D
идентификатор
Заставляет
компилятор рассматривать указанный идентификатор как символ условной компиляции
для всех файлов, обрабатываемых в данный момент. Проверить, определен ли такой
символ в исходном JAVA-файле, позволяет директива #if. Подробнее на эту
тему см. приложение Б «Условная компиляция».
Пример
Следующая
команда компилирует файл myClass.java, определяя для препроцессора символы WINDOWS
и DEBUG:
JVC /D WINDOWS
/D DEBUG myClass.java
/g
- генерация отладочной информации (JVC)
Синтаксис
/g[-]
Заставляет
компилятор генерировать всю отладочную информацию. По умолчанию отладочная информация
не генерируется. Параметр /g дает тот же эффект, что и комбинация следующих
двух параметров.
Параметр
Действие
/g:l Генерируется
информация о номерах строк
/g:t Формируются
отладочные таблицы
Примечание
Чтобы отключить этот параметр, поставьте за ним знак «минус».
Пример
Следующая
команда создает CLASS-файл с именем myClass.class, содержащий отладочную информацию:
JVC /g myClass.java
/g:l
- генерация информации о номерах строк (JVC)
Синтаксис
/g:l[-]
Включает
в конечный CLASS-файл информацию о номерах строк, полезную при отладке программы.
По умолчанию отладочная информация не генерируется.
Примечание
Чтобы отключить этот параметр, поставьте за ним знак «минус».
Пример
Следующая
команда указывает компилятору JVC включить в конечный файл myClass.class информацию
о номерах строк:
JVC /g:l myClass.java
/g:t
- генерация отладочных таблиц (JVC)
Синтаксис
/g:t[-]
Заставляет
компилятор генерировать отладочные таблицы, используемые при отладке программы.
По умолчанию отладочная информация не генерируется.
Примечание
Чтобы отключить этот параметр, поставьте за ним знак «минус»
Пример
Следующая
команда указывает компилятору JVC включить в конечный файл myClass.class отладочные
таблицы:
JVC /g:t myClass.java
/nologo
- подавление вывода эмблемы с авторскими правами
Синтаксис
/nologo
При компиляции
файлов из командной строки отключает вывод информации о версии компилятора и
авторских правах.
Пример
Следующая
команда сообщает компилятору обработать файл myClass.java без вывода эмблемы
с авторскими правами:
JVC /nologo
myClass.java
/nowarn
- подавление вывода предупреждений
Синтаксис
/nowarn
Отключает
вывод любых предупреждений, разрешая лишь вывод сообщений об ошибках.
Пример
Следующая
команда сообщает компилятору обработать файл myClass.java без вывода каких-либо
предупреждений:
JVC /nowarn
myClass.java
/nowrite
- установка режима компиляции без записи (JVC)
Синтаксис
/nowrite
Сообщает
компилятору JVC обработать JAVA-файл, не создавая конечный CLASS-файл. Этот
параметр полезен для проверки синтаксических ошибок в исходном коде.
Пример
Здесь компилируется
файл myClass.java, выдаются предупреждения и сообщения об ошибках, но конечный
файл myClass.class не создается:
JVC /nowrite
myClass.java
/О
- включение оптимизации (JVC)
Синтаксис
/О
Включает
полную оптимизацию, увеличивая производительность создаваемых программ. Этот
параметр дает тот же эффект, что и комбинация следующих двух параметров.
Параметр
Действие
/О:I Оптимизация подстановкой кода методов (где возможно)
/O:J
Оптимизация переходов в байтовом коде (включена
по умолчанию)
Примечание
Чтобы отключить оптимизацию, поставьте за параметром /О знак «минус».
Пример
Следующая
команда полностью оптимизирует код, помещаемый в конечный файл myClass.class:
JVC /О myClass.java
/0:I
- оптимизация подстановкой кода методов (JVC)
Синтаксис
/0:I
Разрешает
компилятору подставлять код методов в точках их вызова. Исключая издержки, связанные
с вызовом методов, Вы получаете более эффективный код. (В языке Java нет механизма,
позволяющего разработчику подставлять код по своему усмотрению.)
Примечание
Чтобы отключить этот параметр, поставьте за ним знак «минус».
Пример
В следующем
примере компилятор анализирует исходный текст в файле myClass.java и везде,
где это возможно, подставляет код методов. Конечный файл myClass.class содержит
оптимизированный код.
JVC /0:1 myClass.java
/0:J
- оптимизация переходов в байтовом коде (JVC)
Синтаксис
/0:J
Заставляет
компилятор JVC оптимизировать переходы в байтовом коде, помещаемом в конечный
CLASS-файл. Этот параметр оптимизации включен по умолчанию.
Примечание
Чтобы отключить этот параметр, поставьте за ним знак «минус».
Пример
В следующем примере компилятор анализирует исходный текст в файле myClass.java и оптимизирует переходы в байтовом коде для повышения его эффективности.
Конечный
файл myClass.class содержит оптимизированный код.
JVC /0:J myClass.java
/ref
- перекомпиляция используемых классов
Синтаксис
/ref[-]
Заставляет
компилятор при загрузке информации о классах из CLASS-файлов проверять соответствующие
исходные JAVA-файлы. Если компилятор найдет исходный файл и обнаружит, что у
него более поздняя дата модификации, чем у CLASS-файла, он перекомпилирует исходный
JAVA-файл.
Если данный
параметр опущен, компилятор просто считывает CLASS-файл независимо от наличия
исходного JAVA-файла. При компиляции из командной строки этот параметр включен
по умолчанию — чтобы отключить его, введите в командной строке /ref-. А в среде
программирования, наоборот, данный параметр по умолчанию отключен.
Внимание
Включать этот параметр в среде программирования не рекомендуется
— сборка проекта может закончиться некорректно.
Пример
Следующая
команда заставляет компилятор обработать файл myClass.java без перекомпиляции
используемых классов:
JVC /ref- myClass.java
/verbose
- включение вывода сообщений компилятора (JVC)
Синтаксис
/verbose
Заставляет
компилятор JVC выводить все сообщения при компиляции файла или проекта. Эти
сообщения дают представление о ходе компиляции.
/w
- установка уровня предупреждений (JVC)
Синтаксис
/w0
/wl
/w2
/w3
/w4
/wx
Управляют
выводом предупреждений, генерируемых компилятором. Компилятор определяет, надо
ли выводить предупреждение, исходя из уровня его значимости (severity level).
Эти параметры влияют лишь на исходные файлы, указанные в командной строке.
Предупреждениям
компилятора присваиваются номера, начинающиеся с J5. Описание предупреждений,
уровней их значимости и потенциальных проблем (не относящихся к ошибкам кодирования)
с операторами, которые могут компилироваться не так, как Вы ожидали, см. в документации.
Назначение каждого из параметров рассматривается в следующей таблице.
Параметр |
Действие |
||
/w0 /wl /w2
/w3 |
Отключает все предупреждения. Разрешает вывод наиболее серьезных предупреждений. Разрешает вывод предупреждений >с уровнем значимости ниже 1. Это уровень по умолчанию. Разрешает вывод
предупреждений с уровнем значимости ниже 2, в том числе об использовании
методов с необъявленным типом возвращаемого значения, об отсутствии
в методах выражений, возвращающих значение с типом, отличным от void,
и о преобразованиях, способных привести к потере точности или самих
данных. |
||
/w4 /wx |
Разрешает вывод наименее серьезных предупреждений. Заставляет интерпретировать
предупреждения как ошибки. Генерация любого предупреждения заставит
компилятор сообщить об ошибке и прекратить компиляцию. Этот параметр
можно использовать совместно с одним из перечисленных выше. |
/х
- отключение расширении языка (JVC)
Синтаксис
/x[-]
Компилятор
Visual J+ + поддерживает не только спецификацию языка Java, но и ряд расширений,
выходящих за рамки этой спецификации. Эти расширения доступны по умолчанию;
чтобы отключить их, укажите параметр /х.
Параметр
/х необходим, если Вы собираетесь переносить свою программу на другие платформы.
Он заставляет компилятор обрабатывать дополнительные ключевые слова как обычные
идентификаторы и отключает остальные расширения, введенные Microsoft.
Примечание
Чтобы отключить этот параметр, поставьте за ним знак «минус».
Пример
В следующем
примере игнорируются все расширения Visual J++, использованные в файле myClass.class:
JVC /x myClass.java
/?
- вывод подсказки по списку параметров (JVC)
Синтаксис
/?
Направляет на стандартное устройство вывода список всех параметров компилятора
с краткими пояснениями.
Когда тот или иной физик использует понятие "физический вакуум", он либо не понимает абсурдности этого термина, либо лукавит, являясь скрытым или явным приверженцем релятивистской идеологии.
Понять абсурдность этого понятия легче всего обратившись к истокам его возникновения. Рождено оно было Полем Дираком в 1930-х, когда стало ясно, что отрицание эфира в чистом виде, как это делал великий математик, но посредственный физик Анри Пуанкаре, уже нельзя. Слишком много фактов противоречит этому.
Для защиты релятивизма Поль Дирак ввел афизическое и алогичное понятие отрицательной энергии, а затем и существование "моря" двух компенсирующих друг друга энергий в вакууме - положительной и отрицательной, а также "моря" компенсирующих друг друга частиц - виртуальных (то есть кажущихся) электронов и позитронов в вакууме.
Однако такая постановка является внутренне противоречивой (виртуальные частицы ненаблюдаемы и их по произволу можно считать в одном случае отсутствующими, а в другом - присутствующими) и противоречащей релятивизму (то есть отрицанию эфира, так как при наличии таких частиц в вакууме релятивизм уже просто невозможен). Подробнее читайте в FAQ по эфирной физике.