【Java Sound】(二)访问音频系统资源

Java Sound

摘自:The Java™ Tutorials,翻译为机翻+少量修正

(二)访问音频系统资源

Java Sound API采用了灵活的系统配置方法。可以在计算机上安装不同种类的音频设备(mixers)。该API没怎么设想(makes few assumptions?)有什么已安装的设备以及其有什么功能。相反,它提供了让系统报告可用音频组件的方法以及让程序访问它们的方法。

以下各节说明你的程序如何了解计算机上已安装了哪些采样音频资源,以及如何获取对可用资源的访问。其中,资源包括混合器和混合器所拥有的各种类型的线路。

AudioSystem类

AudioSystem类充当音频组件(audio components)的交流中心,音频组件包括来自第三方供应商内置服务和单独安装的服务。AudioSystem用作访问这些已安装的采样音频资源的应用程序的入口点。您可以查询AudioSystem来了解已安装了哪些资源,然后可以访问它们。例如,应用程序可能会通过询问AudioSystem类是否存在具有特定配置的混合器来开始,例如在前面的讨论中已说明的输入或输出配置之一。然后,程序将从混合器中获取数据线,依此类推。

以下是应用程序可以从AudioSystem中获得的一些资源:

  • Mixers,混音器——系统通常安装了多个混音器。通常至少有一个用于音频输入,一个用于音频输出。可能还有一些混音器没有I / O端口,而是接受来自应用程序的音频,并将混合的音频传递回该程序。本AudioSystem类提供所有已安装的混音器的列表。
  • Lines,线路——即使每条线路都与一个混合器相关联,应用程序也可以直接从AudioSystem中获得一条线路,而无需明确地和混音器打交道。
  • Format conversions,格式转换——应用程序可以使用格式转换将音频数据从一种格式转换为另一种格式。
  • Files and streams,文件和流——AudioSystem类提供在音频文件和音频流之间进行转换的方法。它还可以报告声音文件的文件格式,并可以以不同的格式写入文件。

Information Objects,信息对象

Java Sound API中的几个类提供了关于相关接口的有用信息。例如, Mixer.Info提供有关已安装的混音器的详细信息,例如混音器的供应商,名称,描述和版本。 Line.Info获取特定线路的类。Line.Info的子类包括 Port.InfoDataLine.Info,分别获取与特定端口和数据线路有关的详细信息。这些类中的每一个都将在下面的相应部分中进行进一步说明。重要的是不要将Info对象与它所描述的混音器或线路对象混淆。

Getting a Mixer,获取一个混音器

通常,使用Java Sound API的程序需要做的第一件事是获取一个混音器,或者至少是一个混音器的一条线路,以便您可以将声音传入或传出计算机。您的程序可能需要一个特定类型的混音器,或者您可能希望显示所有可用混音器的列表,以便用户可以选择一个。无论哪种情况,您都需要了解安装了哪些类型的混音器。AudioSystem提供以下方法:

static Mixer.Info[] getMixerInfo()

此方法返回的每个Mixer.Info对象都标识一种已安装的混音器。(通常,系统最多只有一个给定类型的混合器。如果碰巧有不止一种给定类型的混合器,则返回的数组仍然只有Mixer.Info该类型的一个。)应用程序可以遍历Mixer.Info对象,根据需要来找到一个合适的混音器。Mixer.Info包括以下字符串,以确定一种混音器:

  • Name,名称
  • Version,版本
  • Vendor,供应商
  • Description,描述

这些是可以随意设定内容的字符串,因此需要特定混合器的应用程序必须知道期望的内容,和要去比对内容的字符串(难翻译, 给原文:what to expect and what to compare the strings to.)。提供混音器的公司应在其文档中包含此信息。替代地,并且可能更典型的情况是,应用程序将向用户显示所有Mixer.Info对象的字符串,并让用户选择相应的混合器。

找到合适的混合器后,应用程序将调用以下AudioSystem的方法以获得所需的混音器Mixer:

static Mixer getMixer(Mixer.Info info)

如果您的程序需要具有某些功能的混音器,而不需要特定供应商生产的特定混音器,该怎么办?而且,如果您不认为用户知道应该选择哪种混音器的时候呢?在这种情况下,Mixer.Info对象中的信息将没有太大用处。相反,您可以遍历getMixerInfo返回的所有Mixer.Info对象,通过调用getMixer为每个Info对象获取一个混合器,并向每个混合器查询其功能。例如,您可能需要一个混音器,它可以将其混合音频数据同时写入到一定数量的目标数据线。在这种情况下,您将使用此Mixer的方法查询每个混音器:

int getMaxLines(Line.Info info)

在这里, Line.Info将指定一个TargetDataLine。的Line.Info类将在下节讨论。

获取所需类型的线路line

有两种方法可以获得一条line线路:

  • 直接从 AudioSystem对象中获得
  • 从您已经从AudioSystem对象获得的混合器中获得
直接从AudioSystem获得线路

假设您尚未获得混合器,并且您的程序是一个简单的程序,实际上只需要某种类型的线路line;调音台的详细信息对您而言并不重要。您可以使用以下AudioSystem的方法:

static Line getLine(Line.Info info)

与前面讨论的getMixer方法类似。与Mixer.Info不同的是 , 用作参数的Line.Info不会存储文本信息来指定所需的行。相反,它存储有关所需线路类的信息。

Line.Info是一个抽象类,因此您可以使用其子类之一( Port.InfoDataLine.Info)获取一条线路line。以下的节选代码使用DataLine.Info子类获取并打开目标数据线路:

TargetDataLine line;
DataLine.Info info = new DataLine.Info(TargetDataLine.class, 
    format); // format是一个AudioFormat类型的对象
if (!AudioSystem.isLineSupported(info)) {
    // 处理错误.
}
try {		// 获取并打开线路line.
    line = (TargetDataLine) AudioSystem.getLine(info);
    line.open(format);
} catch (LineUnavailableException ex) {
        // 处理错误.
    //... 
}

此代码获取一个 TargetDataLine对象,而不指定其类和音频格式以外的任何属性。您可以使用类似的代码来获取其他类型的行。对于SourceDataLine类或Clip类,只需将line变量的TargetDataLine类替换为SourceDataLineClip,并在DataLine.Info构造函数的第一个参数中进行替换。

对于Port类,您可以在如下代码中使用Port.Info的静态实例:

if (AudioSystem.isLineSupported(Port.Info.MICROPHONE)) {
    try {
        line = (Port) AudioSystem.getLine(
            Port.Info.MICROPHONE);
    }
}

请注意使用isLineSupported方法来查看混合器是否具有所需类型的线。

回想一下,一个源数据线路是混音器的输入,如果混音器代表一个音频输入设备,那么源数据线路可以代表一个Port对象,或者如果混音器代表一个音频输出装置,那么源数据线路可以是一个SourceDataLineClip对象。类似地,目标线路是混音器的输出:用于音频输出混音器的Port对象,和用于音频输入混频器的TargetDataLine对象。如果调音台根本不连接任何外部硬件设备怎么办?例如,考虑一个内部的或纯软件的混音器,它从应用程序中获取音频并将其混合后的音频传递回该程序。这种混合器的输入线具有SourceDataLineClip对象,输出线具有TargetDataLine对象。

您还可以使用以下AudioSystem方法来了解有关任何已安装的混音器支持的指定类型的源线路和目标线路的更多信息:

static Line.Info[] getSourceLineInfo(Line.Info info)
static Line.Info[] getTargetLineInfo(Line.Info info)

请注意,这些方法中的每一个返回的数组元素都表示线路的唯一种类,而不一定是所有的线路。(不太会翻译,给原文:Note that the array returned by each of these methods indicates unique types of lines, not necessarily all the lines.)例如,如果混音器的两条线或两条不同混音器的线具有相同的Line.Info对象,则这两条线在返回的数组中将仅由一个Line.Info表示。

从混音器Mixer获得线路

Mixer接口包括上述AudioSystem用于访问源线和目标线的方法的变体。这些Mixer方法包括采用Line.Info作为参数的方法,就像AudioSystem的方法一样。但是,Mixer还包括以下变体,它们不带任何参数:

Line.Info[] getSourceLineInfo()
Line.Info[] getTargetLineInfo()

这些方法返回特定混合器的所有Line.Info对象的数组。一旦获得数组,就可以遍历它们,调用MixergetLine方法来获取每一条线路,然后调用Lineopen方法来在你的程序中使用各条线路。

选择输入和输出端口

上一节有关如何获得所需类型的线的方法,也适用于端口以及其他类型的线。您可以通过将一个Port.Info对象传递给AudioSystem(或Mixer)的,可以接受一个Line.Info作为参数的getSourceLineInfogetTargetLineInfo方法,来获取所有的源端口(即输入端口)和目标端口(即输出端口)。然后,您遍历返回的对象数组,并调用Mixer的getLine方法来获取每个端口。

然后可以通过调用Lineopen方法打开每个Port。打开端口意味着您打开了端口的开关——也就是说,您允许声音进入或流出端口。同样,您可以关闭不希望声音传播的端口,因为某些端口可能在您获得它们之前就已经打开。某些平台默认情况下将所有端口保留为打开状态;或者用户或系统管理员可能已使用其他应用程序或操作系统软件选择了将某些端口打开或关闭。

**警告:**如果要选择某个端口并确保声音确实正在传入或传出该端口,则可以按照说明打开该端口。但是,这可以视为对用户有害的行为!例如,用户可能会关闭扬声器端口,以免打扰她的同事。如果您的程序突然破坏了她的愿望并开始大肆歌唱,她会很不高兴。举另外一个例子,用户可能希望确保自己的计算机的麦克风永远不会在不知情的情况下打开,以避免窃听。通常,建议不要打开或关闭端口,除非您的程序响应用户的意图(通过用户界面表示)。相反,请遵守用户或操作系统已选择的设置。

所连接的混音器正常运行之前,无需打开或关闭端口。例如,即使所有输出端口都已关闭,您也可以开始将声音回放到音频输出混音器中。数据仍然会流入混合器,播放不会被阻止,用户只是什么也听不到。用户一旦打开输出端口,便会从该端口上的声音开始听到声音,该声音将从媒体播放到的某处开始。

另外,您无需访问端口即可了解混音器是否具有某些端口。例如,要了解某个混音器是否是音频输出混音器,可以调用getTargetLineInfo以查看它是否具有输出端口。除非您要更改端口设置(例如,端口的打开或关闭状态或它们可能具有的任何控件controls的设置),否则没有理由访问端口本身。

音频资源使用许可

Java Sound API包含一个 AudioPermission类,该类指示小程序(或运行有安全管理器的应用程序)可以对采样音频系统进行哪种访问。录制声音的权限是单独控制的。应当谨慎授予此权限,以帮助防止诸如未经授权的窃听之类的安全风险。默认情况下,小程序和应用程序被授予以下权限:

  • 一个运行在小程序安全管理器下的小程序可以播放音频,但不能录制音频。
  • 没有安全管理器的应用程序可以播放和录制音频。
  • 使用默认安全管理器运行的应用程序可以播放但不能录制音频。

通常,小程序在安全管理器的监督下运行,并且不允许录制声音。另一方面,应用程序不会自动安装安全管理器,这样是能够录制声音的。(但是,如果为应用程序显式调用了默认安全管理器,则不允许该应用程序录制声音。)

即使已被授予显式权限,小应用程序和应用程序也可以在与安全管理器一起运行时记录声音。

如果您的程序无权录制(或播放)声音,则在尝试打开一条线路时会引发异常。除了捕获异常并将问题报告给用户以外,您在程序中无能为力,因为无法通过API来更改权限。(如果可以,那它们将毫无意义,因为这样的话将没有什么安全的方法了!)通常,权限是在一个或多个策略配置文件中设置的,用户或系统管理员可以使用文本编辑器或Policy Tool程序对其进行编辑。

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JAVA开发人员必备是HTML格式的 JavaTM 2 Platform Standard Edition 6 API 规范 本文档是 Java 2 Platform Standard Edition 6.0 的 API 规范。 请参见: 描述 Java 2 Platform 软件包 java.applet 提供创建 applet 所必需的类和 applet 用来与其 applet 上下文通信的类。 java.awt 包含用于创建用户界面和绘制图形图像的所有类。 java.awt.color 提供用于颜色空间的类。 java.awt.datatransfer 提供在应用程序之间和在应用程序内部传输数据的接口和类。 java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的各类事件的接口和类。 java.awt.font 提供与字体相关的类和接口。 java.awt.geom 提供用于在与二维几何形状相关的对象上定义和执行操作的 Java 2D 类。 java.awt.im 提供输入方法框架所需的类和接口。 java.awt.im.spi 提供启用可以与 Java 运行时环境一起使用的输入方法开发的接口。 java.awt.image 提供创建和修改图像的各种类。 java.awt.image.renderable 提供用于生成与呈现无关的图像的类和接口。 java.awt.print 为通用的打印 API 提供类和接口。 java.beans 包含与开发 beans 有关的类,即基于 JavaBeansTM 架构的组件。 java.beans.beancontext 提供与 bean 上下文有关的类和接口。 java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java.nio 定义作为数据容器的缓冲区,并提供其他 NIO 包的概述。 java.nio.channels 定义了各种通道,这些通道表示到能够执行 I/O 操作的实体(如文件和套接字)的连接;定义了用于多路复用的、非阻塞 I/O 操作的选择器。 java.nio.channels.spi 用于 java.nio.channels 包的服务提供者类。 java.nio.charset 定义用来在字节和 Unicode 字符之间转换的 charset、解码器和编码器。 java.nio.charset.spi java.nio.charset 包的服务提供者类。 java.rmi 提供 RMI 包。 java.rmi.activation 为 RMI 对象激活提供支持。 java.rmi.dgc 为 RMI 分布式垃圾回收提供了类和接口。 java.rmi.registry 提供 RMI 注册表的一个类和两个接口。 java.rmi.server 提供支持服务器端 RMI 的类和接口。 java.security 为安全框架提供类和接口。 java.security.acl 此包中的类和接口已经被 java.security 包中的类取代。 java.security.cert 提供用于解析和管理证书、证书撤消列表 (CRL) 和证书路径的类和接口。 java.security.interfaces 提供的接口用于生成 RSA Laboratory Technical Note PKCS#1 中定义的 RSA(Rivest、Shamir 和 Adleman AsymmetricCipher 算法)密钥,以及 NIST 的 FIPS-186 中定义的 DSA(数字签名算法)密钥。 java.security.spec 提供密钥规范和算法参数规范的类和接口。 java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。 java.text.spi java.text 包中类的服务提供者类。 java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类。 java.util.concurrent.atomic 类的小工具包,支持在单个变量上解除锁的线程安全编程。 java.util.concurrent.locks 为锁和等待条件提供一个框架的接口和类,它不同于内置同步和监视器。 java.util.jar 提供读写 JAR (Java ARchive) 文件格式的类,该格式基于具有可选清单文件的标准 ZIP 文件格式。 java.util.logging 提供 JavaTM 2 平台核心日志工具的类和接口。 java.util.prefs 此包允许应用程序存储并获取用户和系统首选项和配置数据。 java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类。 javax.accessibility 定义了用户界面组件与提供对这些组件进行访问的辅助技术之间的协定。 javax.crypto 为加密操作提供类和接口。 javax.crypto.interfaces 根据 RSA Laboratories' PKCS #3 的定义,提供 Diffie-Hellman 密钥接口。 javax.crypto.spec 为密钥规范和算法参数规范提供类和接口。 javax.imageio Java Image I/O API 的主要包。 javax.imageio.event Java Image I/O API 的一个包,用于在读取和写入图像期间处理事件的同步通知。 javax.imageio.metadata 用于处理读写元数据的 Java Image I/O API 的包。 javax.imageio.plugins.bmp 包含供内置 BMP 插件使用的公共类的包。 javax.imageio.plugins.jpeg 支持内置 JPEG 插件的类。 javax.imageio.spi 包含用于 reader、writer、transcoder 和流的插件接口以及一个运行时注册表的 Java Image I/O API 包。 javax.imageio.stream Java Image I/O API 的一个包,用来处理从文件和流中产生的低级别 I/O。 javax.management 提供 Java Management Extensions 的核心类。 javax.management.loading 提供实现高级动态加载的类。 javax.management.modelmbean 提供了 ModelMBean 类的定义。 javax.management.monitor 提供 monitor 类的定义。 javax.management.openmbean 提供开放数据类型和 Open MBean 描述符类。 javax.management.relation 提供 Relation Service 的定义。 javax.management.remote 对 JMX MBean 服务器进行远程访问使用的接口。 javax.management.remote.rmi RMI 连接器是供 JMX Remote API 使用的一种连接器,后者使用 RMI 将客户端请求传输到远程 MBean 服务器。 javax.management.timer 提供对 Timer MBean(计时器 MBean)的定义。 javax.naming 为访问命名服务提供类和接口。 javax.naming.directory 扩展 javax.naming 包以提供访问目录服务的功能。 javax.naming.event 在访问命名和目录服务时提供对事件通知的支持。 javax.naming.ldap 提供对 LDAPv3 扩展操作和控件的支持。 javax.naming.spi 提供一些方法来动态地插入对通过 javax.naming 和相关包访问命名和目录服务的支持。 javax.net 提供用于网络应用程序的类。 javax.net.ssl 提供用于安全套接字包的类。 javax.print 为 JavaTM Print Service API 提供了主要类和接口。 javax.print.attribute 提供了描述 JavaTM Print Service 属性的类型以及如何分类这些属性的类和接口。 javax.print.attribute.standard 包 javax.print.attribute.standard 包括特定打印属性的类。 javax.print.event 包 javax.print.event 包含事件类和侦听器接口。 javax.rmi 包含 RMI-IIOP 的用户 API。 javax.rmi.CORBA 包含用于 RMI-IIOP 的可移植性 API。 javax.rmi.ssl 通过安全套接字层 (SSL) 或传输层安全 (TLS) 协议提供 RMIClientSocketFactory 和 RMIServerSocketFactory 的实现。 javax.security.auth 此包提供用于进行验证和授权的框架。 javax.security.auth.callback 此包提供与应用程序进行交互所必需的类,以便检索信息(例如,包括用户名和密码的验证数据)或显示信息(例如,错误和警告消息)。 javax.security.auth.kerberos 此包包含与 Kerberos 网络验证协议相关的实用工具类。 javax.security.auth.login 此包提供可插入的验证框架。 javax.security.auth.spi 此包提供用于实现可插入验证模块的接口。 javax.security.auth.x500 此包包含应该用来在 Subject 中存储 X500 Principal 和 X500 Private Crendentials 的类。 javax.security.cert 为公钥证书提供类。 javax.security.sasl 包含用于支持 SASL 的类和接口。 javax.sound.midi 提供用于 MIDI(音乐乐器数字接口)数据的 I/O、序列化和合成的接口和类。 javax.sound.midi.spi 在提供新的 MIDI 设备、MIDI 文件 reader 和 writer、或音库 reader 时提供服务提供者要实现的接口。 javax.sound.sampled 提供用于捕获、处理和回放取样的音频数据的接口和类。 javax.sound.sampled.spi 在提供新音频设备、声音文件 reader 和 writer,或音频格式转换器时,提供将为其创建子类的服务提供者的抽象类。 javax.sql 为通过 JavaTM 编程语言进行服务器端数据源访问和处理提供 API。 javax.sql.rowset JDBC RowSet 实现的标准接口和基类。 javax.sql.rowset.serial 提供实用工具类,允许 SQL 类型与 Java 编程语言数据类型之间的可序列化映射关系。 javax.sql.rowset.spi 第三方供应商在其同步提供者的实现中必须使用的标准类和接口。 javax.swing 提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所有平台上的工作方式都相同。 javax.swing.border 提供围绕 Swing 组件绘制特殊边框的类和接口。 javax.swing.colorchooser 包含供 JColorChooser 组件使用的类和接口。 javax.swing.event 供 Swing 组件触发的事件使用。 javax.swing.filechooser 包含 JFileChooser 组件使用的类和接口。 javax.swing.plaf 提供一个接口和许多抽象类,Swing 用它们来提供自己的可插入外观功能。 javax.swing.plaf.basic 提供了根据基本外观构建的用户界面对象。 javax.swing.plaf.metal 提供根据 Java 外观(曾经代称为 Metal)构建的用户界面对象,Java 外观是默认外观。 javax.swing.plaf.multi 提供了组合两个或多个外观的用户界面对象。 javax.swing.plaf.synth Synth 是一个可更换皮肤 (skinnable) 的外观,在其中可委托所有绘制。 javax.swing.table 提供用于处理 javax.swing.JTable 的类和接口。 javax.swing.text 提供类 HTMLEditorKit 和创建 HTML 文本编辑器的支持类。 javax.swing.text.html 提供类 HTMLEditorKit 和创建 HTML 文本编辑器的支持类。 javax.swing.text.html.parser 提供默认的 HTML 解析器以及支持类。 javax.swing.text.rtf 提供一个类 (RTFEditorKit),用于创建富文本格式(Rich-Text-Format)的文本编辑器。 javax.swing.tree 提供处理 javax.swing.JTree 的类和接口。 javax.swing.undo 允许开发人员为应用程序(例如文本编辑器)中的撤消/恢复提供支持。 javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 javax.transaction.xa 提供定义事务管理器和资源管理器之间的协定的 API,它允许事务管理器添加或删除 JTA 事务中的资源对象(由资源管理器驱动程序提供)。 javax.xml 根据 XML 规范定义核心 XML 常量和功能。 javax.xml.bind 为包含解组、编组和验证功能的客户端应用程序提供运行时绑定框架。 javax.xml.bind.annotation 定义将 Java 程序元素定制成 XML 模式映射的注释。 javax.xml.bind.annotation.adapters XmlAdapter 及其规范定义的子类允许任意 Java 类与 JAXB 一起使用。 javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的已优化的二进制数据。 javax.xml.bind.helpers 仅由 JAXB 提供者用于: 提供某些 javax.xml.bind 接口的部分默认实现。 javax.xml.bind.util 有用的客户端实用工具类。 javax.xml.crypto 用于 XML 加密的通用类。 javax.xml.crypto.dom javax.xml.crypto 包的特定于 DOM 的类。 javax.xml.crypto.dsig 用于生成和验证 XML 数字签名的类。 javax.xml.crypto.dsig.dom javax.xml.crypto.dsig 包特定于 DOM 的类。 javax.xml.crypto.dsig.keyinfo 用来解析和处理 KeyInfo 元素和结构的类。 javax.xml.crypto.dsig.spec XML 数字签名的参数类。 javax.xml.datatype XML/Java 类型映射关系。 javax.xml.namespace XML 名称空间处理。 javax.xml.parsers 提供允许处理 XML 文档的类。 javax.xml.soap 提供用于创建和构建 SOAP 消息的 API。 javax.xml.stream javax.xml.stream.events javax.xml.stream.util javax.xml.transform 此包定义了用于处理转换指令,以及执行从源到结果的转换的一般 API。 javax.xml.transform.dom 此包实现特定于 DOM 的转换 API。 javax.xml.transform.sax 此包实现特定于 SAX2 的转换 API。 javax.xml.transform.stax 提供特定于 StAX 的转换 API。 javax.xml.transform.stream 此包实现特定于流和 URI 的转换 API。 javax.xml.validation 此包提供了用于 XML 文档验证的 API。 javax.xml.ws 此包包含核心 JAX-WS API。 javax.xml.ws.handler 该包定义用于消息处理程序的 API。 javax.xml.ws.handler.soap 该包定义用于 SOAP 消息处理程序的 API。 javax.xml.ws.http 该包定义特定于 HTTP 绑定的 API。 javax.xml.ws.soap 该包定义特定于 SOAP 绑定的 API。 javax.xml.ws.spi 该包定义用于 JAX-WS 2.0 的 SPI。 javax.xml.xpath 此包提供了用于 XPath 表达式的计算和访问计算环境的 object-model neutral API。 org.ietf.jgss 此包提供一个框架,该框架允许应用程序开发人员通过利用统一的 API 使用一些来自各种基础安全机制(如 Kerberos)的安全服务,如验证、数据完整性和和数据机密性。 org.omg.CORBA 提供 OMG CORBA API 到 JavaTM 编程语言的映射,包括 ORB 类,如果已实现该类,则程序员可以使用此类作为全功能对象请求代理(Object Request Broker,ORB)。 org.omg.CORBA_2_3 CORBA_2_3 包定义对 Java[tm] Standard Edition 6 中现有 CORBA 接口所进行的添加。 org.omg.CORBA_2_3.portable 提供输入和输出值类型的各种方法,并包含 org/omg/CORBA/portable 包的其他更新。 org.omg.CORBA.DynAnyPackage 提供与 DynAny 接口一起使用的异常(InvalidValue、Invalid、InvalidSeq 和 TypeMismatch)。 org.omg.CORBA.ORBPackage 提供由 ORB.resolve_initial_references 方法抛出的异常 InvalidName,以及由 ORB 类中的动态 Any 创建方法抛出的异常 InconsistentTypeCode。 org.omg.CORBA.portable 提供可移植性层,即可以使一个供应商生成的代码运行在另一个供应商 ORB 上的 ORB API 集合。 org.omg.CORBA.TypeCodePackage 提供用户定义的异常 BadKind 和 Bounds,它们将由 TypeCode 类中的方法抛出。 org.omg.CosNaming 为 Java IDL 提供命名服务。 org.omg.CosNaming.NamingContextExtPackage 此包包含以下在 org.omg.CosNaming.NamingContextExt 中使用的类: AddressHelper StringNameHelper URLStringHelper InvalidAddress 包规范 有关 Java[tm] Platform, Standard Edition 6 ORB 遵守的官方规范的受支持部分的明确列表,请参阅 Official Specifications for CORBA support in Java[tm] SE 6。 org.omg.CosNaming.NamingContextPackage 此包包含 org.omg.CosNaming 包的 Exception 类。 org.omg.Dynamic 此包包含 OMG Portable Interceptor 规范 http://cgi.omg.org/cgi-bin/doc?ptc/2000-08-06 的第 21.9 小节中指定的 Dynamic 模块。 org.omg.DynamicAny 提供一些类和接口使得在运行时能够遍历与 any 有关联的数据值,并提取数据值的基本成分。 org.omg.DynamicAny.DynAnyFactoryPackage 此包包含 DynamicAny 模块的 DynAnyFactory 接口中的类和异常,该模块在 OMG The Common Object Request Broker: Architecture and Specification http://cgi.omg.org/cgi-bin/doc?formal/99-10-07 的第 9.2.2 小节中指定。 org.omg.DynamicAny.DynAnyPackage 此包包含 DynAny 模块的 DynAnyFactory 接口中的类和异常,该模块在 OMG The Common Object Request Broker: Architecture and Specification http://cgi.omg.org/cgi-bin/doc?formal/99-10-07 的第 9.2 小节中指定。 org.omg.IOP 此包包含在 OMG 文档 The Common Object Request Broker: Architecture and Specification http://cgi.omg.org/cgi-bin/doc?formal/99-10-07 的 13.6.小节中指定的 IOP 模块。 org.omg.IOP.CodecFactoryPackage 此包包含 IOP::CodeFactory 接口中指定的异常(作为 Portable Interceptor 规范的一部分)。 org.omg.IOP.CodecPackage 此包根据 IOP::Codec IDL 接口定义生成。 org.omg.Messaging 此包包含 OMG Messaging Interceptor 规范 http://cgi.omg.org/cgi-bin/doc?formal/99-10-07 中指定的 Messaging 模块。 org.omg.PortableInterceptor 提供一个注册 ORB 钩子 (hook) 的机制,通过这些钩子 ORB 服务可以截取执行 ORB 的正常流。 org.omg.PortableInterceptor.ORBInitInfoPackage 此包包含 OMG Portable Interceptor 规范 http://cgi.omg.org/cgi-bin/doc?ptc/2000-08-06 的第 21.7.2 小节中指定的 PortableInterceptor 模块的 ORBInitInfo 本地接口中的异常和 typedef。 org.omg.PortableServer 提供一些类和接口,用来生成跨多个供应商 ORB 的可移植应用程序的服务器端。 org.omg.PortableServer.CurrentPackage 提供各种方法实现,这些实现能够访问调用方法的对象的身份。 org.omg.PortableServer.POAManagerPackage 封装 POA 关联的处理状态。 org.omg.PortableServer.POAPackage 允许程序员构造可在不同 ORB 产品间移植的对象实现。 org.omg.PortableServer.portable 提供一些类和接口,用来生成跨多个供应商 ORB 的可移植应用程序的服务器端。 org.omg.PortableServer.ServantLocatorPackage 提供定位 servant 的类和接口。 org.omg.SendingContext 为值类型的编组提供支持。 org.omg.stub.java.rmi 包含用于 java.rmi 包中出现的 Remote 类型的 RMI-IIOP Stub。 org.w3c.dom 为文档对象模型 (DOM) 提供接口,该模型是 Java API for XML Processing 的组件 API。 org.w3c.dom.bootstrap org.w3c.dom.events org.w3c.dom.ls org.xml.sax 此包提供了核心 SAX API。 org.xml.sax.ext 此包包含适合的 SAX 驱动程序不一定支持的 SAX2 设施的接口。 org.xml.sax.helpers 此包包含“帮助器”类,其中包括对引导基于 SAX 的应用程序的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值