|
Spec-Zone .ru
спецификации, руководства, описания, API
|
public class AudioSystem extends Object
AudioSystem class действует как точка входа к ресурсам выбранной аудиосистемы. Этот class позволяет Вам запрашивать и получать доступ к микшерам, которые устанавливаются на системе. AudioSystem включает много методов для того, чтобы преобразовать аудиоданные между различными форматами, и для того, чтобы преобразовать между аудиофайлами и потоками. Это также обеспечивает метод для того, чтобы он получил a Line непосредственно от AudioSystem не имея дело явно с микшерами. Свойства могут использоваться, чтобы определить микшер значения по умолчанию для определенных типов строки. И системные свойства и файл свойств рассматривают. sound.properties файл свойств читается из специфичного для реализации расположения (обычно, это lib каталог в каталоге установки Java). Если свойство существует и как системное свойство и в файле свойств, системное свойство имеет приоритет. Если ни один не определяется, подходящее значение по умолчанию выбирается среди доступных устройств. Синтаксис файла свойств определяется в Properties.load. Следующая таблица приводит доступные ключи свойства и какие методы рассматривают их:
| Ключ свойства | Интерфейс | Метод (ы), на который влияют, |
|---|---|---|
javax.sound.sampled.Clip |
Clip |
getLine(javax.sound.sampled.Line.Info), getClip() |
javax.sound.sampled.Port |
Port |
getLine(javax.sound.sampled.Line.Info) |
javax.sound.sampled.SourceDataLine |
SourceDataLine |
getLine(javax.sound.sampled.Line.Info), getSourceDataLine(javax.sound.sampled.AudioFormat) |
javax.sound.sampled.TargetDataLine |
TargetDataLine |
getLine(javax.sound.sampled.Line.Info), getTargetDataLine(javax.sound.sampled.AudioFormat) |
mixer provider class. Имя микшера является соответствующим против String возвращенный getName метод Mixer.Info. Или имя class, или имя микшера может быть опущено. Если только имя class определяется, запаздывающий знак "диез" дополнительный. Если провайдер, class определяется, и это может быть successully, полученный от установленных провайдеров, списка Mixer.Info объекты получаются от провайдера. Иначе, или когда эти микшеры не обеспечивают последующее соответствие, список получается от getMixerInfo() содержать всех доступных Mixer.Info объекты.
Если имя микшера определяется, получающийся список Mixer.Info объекты ищутся: первый с соответствующим именем, и чей Mixer обеспечивает соответствующий линейный интерфейс, будет возвращен. Если никакое соответствие Mixer.Info объект находится, или имя микшера не определяется, первый микшер от получающегося списка, который обеспечивает соответствующий линейный интерфейс, будет возвращен. Например, свойство javax.sound.sampled.Clip со значением "com.sun.media.sound.MixerProvider#SunClip" будет иметь следующие последствия когда getLine вызывается, запрашивая a Clip экземпляр: если class com.sun.media.sound.MixerProvider существует в списке установленных провайдеров микшера, первого Clip от первого микшера с именем "SunClip" будет возвращен. Если это не может быть найдено, первое Clip от первого микшера указанного провайдера будет возвращен, независимо от имени. Если нет ни одного, первого Clip сначала Mixer с именем "SunClip" в списке всех микшеров (как возвращено getMixerInfo) будет возвращен, или, если не найденный, первое Clip из первого Mixerэто может быть найдено в списке всех микшеров, возвращается. Если это перестало работать, также, IllegalArgumentException бросается.
AudioFormat, AudioInputStream, Mixer, Line, Line.Info| Модификатор и Тип | Поле и Описание |
|---|---|
static int |
NOT_SPECIFIED
Целое число, которое обозначает неизвестное числовое значение.
|
| Модификатор и Тип | Метод и Описание |
|---|---|
static AudioFileFormat |
getAudioFileFormat(File file)
Получает формат аудиофайла указанного
File. |
static AudioFileFormat |
getAudioFileFormat(InputStream stream)
Получает формат аудиофайла обеспеченного входного потока.
|
static AudioFileFormat |
getAudioFileFormat(URL url)
Получает формат аудиофайла указанного URL.
|
static AudioFileFormat.Type[] |
getAudioFileTypes()
Получает типы файла, для которых поддержка записи файла оказывается системой.
|
static AudioFileFormat.Type[] |
getAudioFileTypes(AudioInputStream stream)
Получает типы файла, которые система может записать из определенного потока аудиовхода.
|
static AudioInputStream |
getAudioInputStream(AudioFormat.Encoding targetEncoding, AudioInputStream sourceStream)
Получает поток аудиовхода обозначенного кодирования, преобразовывая обеспеченный поток аудиовхода.
|
static AudioInputStream |
getAudioInputStream(AudioFormat targetFormat, AudioInputStream sourceStream)
Получает поток аудиовхода обозначенного формата, преобразовывая обеспеченный поток аудиовхода.
|
static AudioInputStream |
getAudioInputStream(File file)
Получает поток аудиовхода из обеспеченного
File. |
static AudioInputStream |
getAudioInputStream(InputStream stream)
Получает поток аудиовхода из обеспеченного входного потока.
|
static AudioInputStream |
getAudioInputStream(URL url)
Получает поток аудиовхода из обеспеченного URL.
|
static Clip |
getClip()
Получает клип, который может использоваться для того, чтобы воспроизвести аудиофайл или аудиопоток.
|
static Clip |
getClip(Mixer.Info mixerInfo)
Получает клип из указанного микшера, который может использоваться для того, чтобы воспроизвести аудиофайл или аудиопоток.
|
static Line |
getLine(Line.Info info)
Получает строку, которая соответствует описание в указанном
Line.Info объект. |
static Mixer |
getMixer(Mixer.Info info)
Получает требуемый аудио микшер.
|
static Mixer.Info[] |
getMixerInfo()
Получает массив объектов информации микшера, который представляет набор аудио микшеров, которые в настоящий момент устанавливаются на системе.
|
static SourceDataLine |
getSourceDataLine(AudioFormat format)
Получает строку исходных данных, которая может использоваться для того, чтобы воспроизвести аудиоданные в формате, определенном
AudioFormat объект. |
static SourceDataLine |
getSourceDataLine(AudioFormat format, Mixer.Info mixerinfo)
Получает строку исходных данных, которая может использоваться для того, чтобы воспроизвести аудиоданные в формате, определенном
AudioFormat объект, обеспеченный микшером, определенным Mixer.Info объект. |
static Line.Info[] |
getSourceLineInfo(Line.Info info)
Получает информацию обо всех исходных строках определенного типа, которые поддерживаются установленными микшерами.
|
static TargetDataLine |
getTargetDataLine(AudioFormat format)
Получает целевую строку данных, которая может использоваться для того, чтобы записать аудиоданные в формате, определенном
AudioFormat объект. |
static TargetDataLine |
getTargetDataLine(AudioFormat format, Mixer.Info mixerinfo)
Получает целевую строку данных, которая может использоваться для того, чтобы записать аудиоданные в формате, определенном
AudioFormat объект, обеспеченный микшером, определенным Mixer.Info объект. |
static AudioFormat.Encoding[] |
getTargetEncodings(AudioFormat.Encoding sourceEncoding)
Получает кодировки, которые система может получить из потока аудиовхода с указанным кодированием, используя набор установленных преобразователей формата.
|
static AudioFormat.Encoding[] |
getTargetEncodings(AudioFormat sourceFormat)
Получает кодировки, которые система может получить из потока аудиовхода с указанным форматом, используя набор установленных преобразователей формата.
|
static AudioFormat[] |
getTargetFormats(AudioFormat.Encoding targetEncoding, AudioFormat sourceFormat)
Получает форматы, у которых есть определенное кодирование и что система может получить из потока указанного формата, используя набор установленных преобразователей формата.
|
static Line.Info[] |
getTargetLineInfo(Line.Info info)
Получает информацию обо всех целевых строках определенного типа, которые поддерживаются установленными микшерами.
|
static boolean |
isConversionSupported(AudioFormat.Encoding targetEncoding, AudioFormat sourceFormat)
Указывает, может ли поток аудиовхода указанного кодирования быть получен из потока аудиовхода, у которого есть указанный формат.
|
static boolean |
isConversionSupported(AudioFormat targetFormat, AudioFormat sourceFormat)
Указывает, может ли поток аудиовхода указанного формата быть получен из потока аудиовхода другого указанного формата.
|
static boolean |
isFileTypeSupported(AudioFileFormat.Type fileType)
Указывает, оказывается ли поддержка записи файла указанного типа файла системой.
|
static boolean |
isFileTypeSupported(AudioFileFormat.Type fileType, AudioInputStream stream)
Указывает, может ли аудиофайл указанного типа файла быть записан из обозначенного потока аудиовхода.
|
static boolean |
isLineSupported(Line.Info info)
Указывает, поддерживает ли система какие-либо строки, которые соответствуют указанное
Line.Info объект. |
static int |
write(AudioInputStream stream, AudioFileFormat.Type fileType, File out)
Пишет поток байтов, представляющих аудиофайл указанного типа файла к внешнему обеспеченному файлу.
|
static int |
write(AudioInputStream stream, AudioFileFormat.Type fileType, OutputStream out)
Пишет поток байтов, представляющих аудиофайл указанного типа файла к обеспеченному потоку вывода.
|
public static final int NOT_SPECIFIED
NOT_SPECIFIED для таких параметров. Другие методы могут также принять или возвратить это значение, как задокументировано.public static Mixer.Info[] getMixerInfo()
getMixer(javax.sound.sampled.Mixer.Info)public static Mixer getMixer(Mixer.Info info)
info - a Mixer.Info объект, представляющий требуемый микшер, или null для микшера системного значения по умолчаниюSecurityException - если требуемый микшер недоступен из-за ограничений безопасностиIllegalArgumentException - если объект информации не представляет микшер, установленный на системеgetMixerInfo()public static Line.Info[] getSourceLineInfo(Line.Info info)
info - a Line.Info объект, который определяет вид строк, о которых требуют информациюLine.Info объекты, описывающие исходные строки, соответствующие тип, требуют. Если никакие исходные строки соответствия не поддерживаются, массив длины 0 возвращается.Mixer.getSourceLineInfo(Line.Info)public static Line.Info[] getTargetLineInfo(Line.Info info)
info - a Line.Info объект, который определяет вид строк, о которых требуют информациюLine.Info объекты, описывающие целевые строки, соответствующие тип, требуют. Если никакие целевые строки соответствия не поддерживаются, массив длины 0 возвращается.Mixer.getTargetLineInfo(Line.Info)public static boolean isLineSupported(Line.Info info)
Line.Info объект. Строка поддерживается, если какой-либо установленный микшер поддерживает ее.info - a Line.Info объект, описывающий строку, для которой запрашивается поддержкаtrue если по крайней мере одна строка соответствия поддерживается, иначе falseMixer.isLineSupported(Line.Info)public static Line getLine(Line.Info info) throws LineUnavailableException
Line.Info объект. Если a DataLine требуется, и info экземпляр DataLine.Info определяя по крайней мере один полностью определенный аудиоформат, последний будет использоваться в качестве формата значения по умолчанию возвращенного DataLine.
Если системные свойства javax.sound.sampled.Clip, javax.sound.sampled.Port, javax.sound.sampled.SourceDataLine и javax.sound.sampled.TargetDataLine определяются или они определяются в файле "sound.properties", они используются, чтобы получить строки значения по умолчанию. Для получения дополнительной информации обратитесь к class description. Если соответствующее свойство не устанавливается, или микшер, который требуют в свойстве, не устанавливается или не обеспечивает требуемую строку, все установленные микшеры запрашиваются для требуемого типа строки. Строка будет возвращена из первого микшера, обеспечивающего требуемый тип строки.
info - a Line.Info объект, описывающий требуемый вид строкиLineUnavailableException - если строка соответствия не доступна из-за ограничений ресурсаSecurityException - если строка соответствия не доступна из-за ограничений безопасностиIllegalArgumentException - если система не поддерживает по крайней мере одну строку, соответствующую указанное Line.Info объект через любой установленный микшерpublic static Clip getClip() throws LineUnavailableException
Clip объект. Возвращенный клип должен быть открыт с open(AudioFormat) или open(AudioInputStream) метод.
Это - высокоуровневый метод, который использует getMixer и getLine внутренне.
Если системное свойство javax.sound.sampled.Clip определяется или это определяется в файле "sound.properties", это используется, чтобы получить клип значения по умолчанию. Для получения дополнительной информации обратитесь к class description.
LineUnavailableException - если объект клипа не доступен из-за ограничений ресурсаSecurityException - если объект клипа не доступен из-за ограничений безопасностиIllegalArgumentException - если система не поддерживает по крайней мере один экземпляр клипа через какой-либо установленный микшерgetClip(Mixer.Info)public static Clip getClip(Mixer.Info mixerInfo) throws LineUnavailableException
Возвращенный клип должен быть открыт с open(AudioFormat) или open(AudioInputStream) метод.
Это - высокоуровневый метод, который использует getMixer и getLine внутренне.
mixerInfo - a Mixer.Info объект, представляющий требуемый микшер, или null для микшера системного значения по умолчаниюLineUnavailableException - если клип не доступен от этого микшера из-за ограничений ресурсаSecurityException - если клип не доступен от этого микшера из-за ограничений безопасностиIllegalArgumentException - если система не поддерживает по крайней мере один клип через указанный микшерgetClip()public static SourceDataLine getSourceDataLine(AudioFormat format) throws LineUnavailableException
AudioFormat объект. Возвращенная строка будет обеспечена системным микшером значения по умолчанию, или, если не возможный, любым другим микшером, установленным в системе, которая поддерживает соответствие SourceDataLine объект. Возвращенная строка должна быть открыта с open(AudioFormat) или open(AudioFormat, int) метод.
Это - высокоуровневый метод, который использует getMixer и getLine внутренне.
Возвращенный SourceDataLine's аудиоформат значения по умолчанию будет инициализирован с format.
Если системное свойство javax.sound.sampled.SourceDataLine определяется или это определяется в файле "sound.properties", это используется, чтобы получить строку исходных данных значения по умолчанию. Для получения дополнительной информации обратитесь к class description.
format - AudioFormat объект, определяющий поддерживаемый аудиоформат возвращенной строки, или null для любого аудиоформатаSourceDataLine объектLineUnavailableException - если соответствующая строка исходных данных не доступна из-за ограничений ресурсаSecurityException - если соответствующая строка исходных данных не доступна из-за ограничений безопасностиIllegalArgumentException - если система не поддерживает по крайней мере одну строку исходных данных, поддерживающую указанный аудиоформат через какой-либо установленный микшерgetSourceDataLine(AudioFormat, Mixer.Info)public static SourceDataLine getSourceDataLine(AudioFormat format, Mixer.Info mixerinfo) throws LineUnavailableException
AudioFormat объект, обеспеченный микшером, определенным Mixer.Info объект. Возвращенная строка должна быть открыта с open(AudioFormat) или open(AudioFormat, int) метод.
Это - высокоуровневый метод, который использует getMixer и getLine внутренне.
Возвращенный SourceDataLine's аудиоформат значения по умолчанию будет инициализирован с format.
format - AudioFormat объект, определяющий поддерживаемый аудиоформат возвращенной строки, или null для любого аудиоформатаmixerinfo - a Mixer.Info объект, представляющий требуемый микшер, или null для микшера системного значения по умолчаниюSourceDataLine объектLineUnavailableException - если соответствующая строка исходных данных не доступна от указанного микшера из-за ограничений ресурсаSecurityException - если соответствующая строка исходных данных не доступна от указанного микшера из-за ограничений безопасностиIllegalArgumentException - если указанный микшер не поддерживает по крайней мере одну строку исходных данных, поддерживающую указанный аудиоформатgetSourceDataLine(AudioFormat)public static TargetDataLine getTargetDataLine(AudioFormat format) throws LineUnavailableException
AudioFormat объект. Возвращенная строка будет обеспечена системным микшером значения по умолчанию, или, если не возможный, любым другим микшером, установленным в системе, которая поддерживает соответствие TargetDataLine объект. Возвращенная строка должна быть открыта с open(AudioFormat) или open(AudioFormat, int) метод.
Это - высокоуровневый метод, который использует getMixer и getLine внутренне.
Возвращенный TargetDataLine's аудиоформат значения по умолчанию будет инициализирован с format.
Если системное свойство javax.sound.sampled.TargetDataLine определяется или это определяется в файле "sound.properties", это используется, чтобы получить целевую строку данных значения по умолчанию. Для получения дополнительной информации обратитесь к class description.
format - AudioFormat объект, определяющий поддерживаемый аудиоформат возвращенной строки, или null для любого аудиоформатаTargetDataLine объектLineUnavailableException - если соответствующая целевая строка данных не доступна из-за ограничений ресурсаSecurityException - если соответствующая целевая строка данных не доступна из-за ограничений безопасностиIllegalArgumentException - если система не поддерживает по крайней мере одну целевую строку данных, поддерживающую указанный аудиоформат через какой-либо установленный микшерgetTargetDataLine(AudioFormat, Mixer.Info), AudioPermissionpublic static TargetDataLine getTargetDataLine(AudioFormat format, Mixer.Info mixerinfo) throws LineUnavailableException
AudioFormat объект, обеспеченный микшером, определенным Mixer.Info объект. Возвращенная строка должна быть открыта с open(AudioFormat) или open(AudioFormat, int) метод.
Это - высокоуровневый метод, который использует getMixer и getLine внутренне.
Возвращенный TargetDataLine's аудиоформат значения по умолчанию будет инициализирован с format.
format - AudioFormat объект, определяющий поддерживаемый аудиоформат возвращенной строки, или null для любого аудиоформатаmixerinfo - a Mixer.Info объект, представляющий требуемый микшер, или null для микшера системного значения по умолчаниюTargetDataLine объектLineUnavailableException - если соответствующая целевая строка данных не доступна от указанного микшера из-за ограничений ресурсаSecurityException - если соответствующая целевая строка данных не доступна от указанного микшера из-за ограничений безопасностиIllegalArgumentException - если указанный микшер не поддерживает по крайней мере одну целевую строку данных, поддерживающую указанный аудиоформатgetTargetDataLine(AudioFormat), AudioPermissionpublic static AudioFormat.Encoding[] getTargetEncodings(AudioFormat.Encoding sourceEncoding)
sourceEncoding - кодирование, для которого запрашивается поддержка преобразованияsourceEncodingне поддерживается, массив длины 0 возвращается. Иначе, у массива будет длина по крайней мере 1, представляя sourceEncoding (никакое преобразование).public static AudioFormat.Encoding[] getTargetEncodings(AudioFormat sourceFormat)
sourceFormat - аудиоформат, для которого запрашивается преобразованиеsourceFormatне поддерживается, массив длины 0 возвращается. Иначе, у массива будет длина по крайней мере 1, представляя кодирование sourceFormat (никакое преобразование).public static boolean isConversionSupported(AudioFormat.Encoding targetEncoding, AudioFormat sourceFormat)
targetEncoding - требуемое кодирование после преобразованияsourceFormat - аудиоформат перед преобразованиемtrue если преобразование поддерживается, иначе falsepublic static AudioInputStream getAudioInputStream(AudioFormat.Encoding targetEncoding, AudioInputStream sourceStream)
targetEncoding - требуемое кодирование после преобразованияsourceStream - поток, который будет преобразованIllegalArgumentException - если преобразование не поддерживаетсяgetTargetEncodings(AudioFormat.Encoding), getTargetEncodings(AudioFormat), isConversionSupported(AudioFormat.Encoding, AudioFormat), getAudioInputStream(AudioFormat, AudioInputStream)public static AudioFormat[] getTargetFormats(AudioFormat.Encoding targetEncoding, AudioFormat sourceFormat)
targetEncoding - требуемое кодирование после преобразованияsourceFormat - аудиоформат перед преобразованиемpublic static boolean isConversionSupported(AudioFormat targetFormat, AudioFormat sourceFormat)
targetFormat - требуемый аудиоформат после преобразованияsourceFormat - аудиоформат перед преобразованиемtrue если преобразование поддерживается, иначе falsepublic static AudioInputStream getAudioInputStream(AudioFormat targetFormat, AudioInputStream sourceStream)
targetFormat - требуемый аудиоформат после преобразованияsourceStream - поток, который будет преобразованIllegalArgumentException - если преобразование не поддерживается #see #getTargetEncodings (Аудиоформат)getTargetFormats(AudioFormat.Encoding, AudioFormat), isConversionSupported(AudioFormat, AudioFormat), getAudioInputStream(AudioFormat.Encoding, AudioInputStream)public static AudioFileFormat getAudioFileFormat(InputStream stream) throws UnsupportedAudioFileException, IOException
IOException.stream - входной поток, из которого должна быть извлечена информация о формате файлаAudioFileFormat объект, описывающий формат аудиофайла потокаUnsupportedAudioFileException - если поток не указывает на допустимые данные аудиофайла, распознанные системойIOException - если исключение ввода/вывода происходитInputStream.markSupported(), InputStream.mark(int)public static AudioFileFormat getAudioFileFormat(URL url) throws UnsupportedAudioFileException, IOException
url - URL, из которого должна быть извлечена информация о формате файлаAudioFileFormat объект, описывающий формат аудиофайлаUnsupportedAudioFileException - если URL не указывает на допустимые данные аудиофайла, распознанные системойIOException - если исключение ввода/вывода происходитpublic static AudioFileFormat getAudioFileFormat(File file) throws UnsupportedAudioFileException, IOException
File. File должен указать на допустимые данные аудиофайла.file - File из которого должна быть извлечена информация о формате файлаAudioFileFormat объект, описывающий формат аудиофайлаUnsupportedAudioFileException - если File не указывает на допустимые данные аудиофайла, распознанные системойIOException - если исключение ввода-вывода происходитpublic static AudioInputStream getAudioInputStream(InputStream stream) throws UnsupportedAudioFileException, IOException
IOException.stream - входной поток тот, от который AudioInputStream должен быть созданAudioInputStream основанный на объектах на данных аудиофайла содержится во входном потоке.UnsupportedAudioFileException - если поток не указывает на допустимые данные аудиофайла, распознанные системойIOException - если исключение ввода-вывода происходитInputStream.markSupported(), InputStream.mark(int)public static AudioInputStream getAudioInputStream(URL url) throws UnsupportedAudioFileException, IOException
url - URL тот, для который AudioInputStream должен быть созданAudioInputStream основанный на объектах на данных аудиофайла указывается URLUnsupportedAudioFileException - если URL не указывает на допустимые данные аудиофайла, распознанные системойIOException - если исключение ввода-вывода происходитpublic static AudioInputStream getAudioInputStream(File file) throws UnsupportedAudioFileException, IOException
File. File должен указать на допустимые данные аудиофайла.file - File для которого AudioInputStream должен быть созданAudioInputStream основанный на объектах на данных аудиофайла, на которые указывают FileUnsupportedAudioFileException - если File не указывает на допустимые данные аудиофайла, распознанные системойIOException - если исключение ввода-вывода происходитpublic static AudioFileFormat.Type[] getAudioFileTypes()
public static boolean isFileTypeSupported(AudioFileFormat.Type fileType)
fileType - тип файла, для которого запрашиваются возможности записиtrue если тип файла поддерживается, иначе falsepublic static AudioFileFormat.Type[] getAudioFileTypes(AudioInputStream stream)
stream - поток аудиовхода, для которого запрашивается поддержка типа аудиофайлаpublic static boolean isFileTypeSupported(AudioFileFormat.Type fileType, AudioInputStream stream)
fileType - тип файла, для которого запрашиваются возможности записиstream - поток, для которого запрашивается пишущая файл поддержкаtrue если тип файла поддерживается для этого потока аудиовхода, иначе falsepublic static int write(AudioInputStream stream, AudioFileFormat.Type fileType, OutputStream out) throws IOException
AudioSystem.NOT_SPECIFIED.stream - поток аудиовхода, содержащий аудиоданные, которые будут записаны файлуfileType - вид аудиофайла, чтобы записатьout - поток, которому должны быть записаны данные файлаIOException - если исключение ввода/вывода происходитIllegalArgumentException - если тип файла не поддерживается системойisFileTypeSupported(javax.sound.sampled.AudioFileFormat.Type), getAudioFileTypes()public static int write(AudioInputStream stream, AudioFileFormat.Type fileType, File out) throws IOException
stream - поток аудиовхода, содержащий аудиоданные, которые будут записаны файлуfileType - вид аудиофайла, чтобы записатьout - внешний файл, которому должны быть записаны данные файлаIOException - если исключение ввода-вывода происходитIllegalArgumentException - если тип файла не поддерживается системойisFileTypeSupported(javax.sound.sampled.AudioFileFormat.Type), getAudioFileTypes()
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92