GCC - The Complete Reference (537669), страница 37
Текст из файла (страница 37)
Таблица 8.9. Опции утилиты 9гер)аг Распечатывает этот список опций. --Ье1р 8859-5 азстт ээсзтз Юачаагс Глава В. Компиляция программ на языке дача 167 Набор символов 1ВО-Ьэпл-1!ВВб1-! ). Стандартный набор АЗСГь Расширенный набор цл)себе для представления символов японского языка. Стандартный набор АВСй со встроенным е ээкэ шестнадцатиричным представлением расширенных символов 0л1собе э форме тихххх. Набор ВЬИ1 ЛЯ, применяемый е японской версии операционной системы М)сюзся Ч%лбошэ. Форма кодировки символов Ол)себе, сохраняющая В-битное включение основного набора символов АЯСй.
Выводит смещение найденного соответствия э байтах от начала находящегося е архиве Файла. Выводит количество найденных соответствий вместо подробного вывода каждого включения. Этой опцией может быть указан шаблон для поиска е том случае, когда его положение е строке может вызвать разночтение. Игнорирует при поиске регистр символов)те.
не различает прописные и строчные буквы). 1 68 Часть 11. Использование Сборного Компилятора Опции Оппвааав Выводит номер строки в файле для каждого соответствия. Эта опция подавляет вывод сообщений об ошибках. Выводит номер версии утилиты дгер5аг. Опция назначает условие, при котором требуется соответствие целого отдельного слова заданному шаблону регулярного выражения. -в — тегвеол КМ! ° Во-первых, из-за того, что в процессе удаленного вызона объекты могут создаваться, разрушаться, проходить прямое н обратное преобразования Мар- Набор средств ЯМУ (Вегпосе Мегйаг( 1пуосагюп) для вызова удаленных методов предоставляет вазможность методу lауа, выполняемому в одной виртуальной машине, вызывать метод объекта другой виртуальной машины.
Две эти виртуальные машины Зауа могут при этом как паралельно выполняться в одной многозадачной системе, так и быть запущенными на разных компъютерах, т.е. в распределенной системе (с(айг!Ьцгег1 зузсеш). Вся эта кухня выглядит примерно следующим образом. Аргументы вызова последовательно упорядочиваются таким образом, чтобы они могли быть переданы ат вызывающего метода к вызываемому.
("зег1а1!ге"; чаще в описании распределенных систем применяется особый термин "гпагзйаП!пя" — маршалипг — те. преобразование Маршала.) Через такое же преобразование проходят также и возвращаемые значения. Имеется центральный реестр, который содержит имя и расположение доступных для вгязава, то есть актуальных методов. Для объекта, выполняющего вызов нет необходимости знать, вызывает ли он локальный или удаленный метод.
Вызывающий метод обращается к вызынаемому удаленному методу по его имени и этот вызов принимает особый локальный метод-заглушка, згиб-метод, передающий запросы, ("згцЬ" можно перевести как "обрубок".) Далее згиЬ-метод находит актуальный метод в центральном реестре виртуальной машины, выполняет маршалннг аргументов и передает их вместе с адресом возврата скелетпому методу. При нспользованини транспортного протокола ТСР/1 Р удаленная виртуальная машина может бгять найдена где угодно. На удаленной машине скелетныи метод производит обратное преобразование Маршала над аргументами и вызывает требуемый актуальный метод.
Метод отдает свой результат вызвавшему его скелетному методу. Тот в свою очередь подвергает маршалингу этот результат и передает его назад МиЬ-методу побеспокоившей его виртуальной машины. И теперь, конечно, уже ууиЬ-метод выполняет обратное преобразование Маршала результата и передает его первоначальному вызывающему методу. Машина, вызывающая удаленный метод называется клиентом.
А вызываемая машина — сервером. Следует знать, что выполнение удаленных вызовов связано с некоторыми сложными моментами: Глава Н. Компиляция программ на языке Зача 169 шала, следует как-то управлять распределением хранения данных ("дагЬаяе собес!юп" — буквально "сборкой мусора" ) в распределенной системе. Система задействования удаленных методов йМ1 использует счетчик, который увеличивается при каждом входящем отношении (ге(егепсе) и уменьшается при его сбросе. Это усложняется тем, что возвращаемые удаленному вызывающему методу объекты могут содержать отношения с другими удаленными объектами. ° Клиентская виртуальная машина содержит свой локальный счетчик активных отношений к удаленным объектам.
Сообщения с отношениями посылаются удаленной виртуальной машине. Их счет инкрементируется и декрементируется по мере того, как отношения уходят и приходят, и о каждом изменении счета сообщается серверу, Когда этот счетчик обнуляется, то объект может быть "собран в мусор" (яагЬаяе со11есгед) сервером.
° Серверная виртуальная машина хранит список всех клиентских виртуальных машин и активных обектов, к которым каждый из клиентов имеет действующие отношения. Объект может быть удален только тогда, когда больше нет ни одного связанного с ним удаленного отношения. Частные серверные счетчики отношений машины-клиента к объектам сервера также могут быть обнулены при превышении допустимого времени отсутствия обращений. ппк Утилита хпгй с — это компилятор скелетных (з)се!еюп) методов и згиЬ-методов инпрфейса йМ1.
На входе этот компилятор принимает скомпилированный в байт-код фзйл класса /ага, реализующий интерфейс з ача. кза1. невюсе, Компилятор хзайс вырабатывает на выходе исходные файлы стаб-метода * НспЬ. з ача и скеяетного ветода * н)се1. з ача и их готовые классы — файлы . с1авв с байт-кодом 1"чМ. Для примера приведем простой класс, реализующий интерфейс удаленного вы)ем через объявление 1шр1езаепсв Зача. хвг1.Нешоее. /* Не11опепоее.эача "/ рпызс с1авв Не11овепосе 1ар1епепев Зача.хпз.вепоее ( Рпъзъс чгод вРеак() ( Вувсеп.опс.рк5.пс1п("Ье11о Ггоп кепосе")г Следуюгцая последовательность команд создаст исходные файлы и готовые к выфнвеиию в виртуальной машине Зача йМ1-методы вспЬ и в)се1ееоп: 3 яс! -С Не11онепосе.)ача ! хвгс Не11овепосе Первая команда выведет файл Не11одегаосе.
с1авв. Вторая команда создаст вару исходных файлов не11онепюсе нспЬ, дача и не11онепюсе Н)се1. дача, з также соответствующие им файлы-классы не11онешосе нвпь.с1авв и )Н11овешосе Н)се1.с1авв. Компилятор хза1с задействует ссз для компиляции )вй- и скелетного методов. 170 Часть Н. Использование Сборного Компилятора Таблица 8.10. Опции командной строки утилиты плк Онннн Оннеаннв Путь к ситемному каталогу для разрешения ссылок на включаемые классы. -с1аварвкв рать Имя каталога для выходных файлов. Включает проверку зависимостей с перекомпиляцией всех неактуальных файлов, на которые имеются ссылки в компилируемой программе. Помещает отладочную информацию в вырабатываемые файлы. Выводит на стандартное устройство вывода этот список опций. Передает указанный флаг компилятору дэчэ для компиляции * вкпь и * вве1 методов.
Сохраняет временные файлы, удаляемые по умолчанию. То же, что и -Хееряепекаьеа. Сохраняет удаляемые по умолчанию временные файлы. То же, что и -хвер. При этой опции вырабатываемые исходные * вкпь. «аче и * вхе1.теча файлы не компилируются далее в файлы-классы вкпь.с1ваа и вхе1.с1ааа. Подавляет вывод предупреждений и сообщений об ошибках. Вырабатывает з1ць-файлы в формате дача версии 1.1. Вырабатывает з1цЬ-файлы в формате,/ача версии 1.2. Вырабатывает зШЬ-файлы, совместимые с обоими версиями языка дача — 1.1 и 1.2. -д аххессоку -еврепа -Ье1р — Гзан -веер -Хееряепехакеа -посошр11е -поиекп -ч1.. 1 -ч1.
2 -чсошреп Выводит описания выполняемых действий. Выводит номер версии компилятора кш1с. -чекЬоае -чеквгоп пп~геуйгу Программа хвк1 гас~ассу — зто "демон", который поддерживает список актуальных лля удаленного вызова методов в виртуальной машине «ауа. Он принимает входящие сообшения через ТСР/1 Р порт (ло умолчанию — порт с номером 1099).
Если для этого применяется другой номер порта, то он может быть указан в командной строке при запуске хтвххедхвьху. Остальные доступные опции команды приведены в таблице 8.11, их совсем немного. Таблица 8,11. Опции командной строки ггл1ге8121гу Олена Оннеанша Выводит список допустимых опций и завершает работу программы, Выводит номер версии программы кш1кед1акку и завершает ее работу. — не 1р --чекв1оп В таблице 8.10 приводятся опции командной строки, поддерживаемые утилитой хвг«с. Все опции могут применяться не только в форме с одним предварительным дефисом, как они показаны в таблице, но и с двумя предварительными дефисами. Те.