Java Media API 是一套涵盖广泛的多媒体技术领域的资源。其中,如 2D API 和 声音 API 是核心 J2SE 平台的一部分;其余的是目前可选的扩展,不过其中的一些技术在将来无疑会进入核心。这个领域的其它 API 还有 Java 3D、Advanced Imaging(高级图像处理)、Image I/O(图像 I/O)、Java Media Framework(JMF,Java 媒体框架)和 Speech(语音)。
Java 3D
Java 3D API 提供了一套面向对象的接口,支持一种简单的、高级的编程模型,让开发人员可以构建、着色和控制 3D 对象的行为和可视环境。
这个 API 包括一个详细的规范文档和 javax.media.j3d 、 javax.vecmath 包的实现。
Advanced Imaging
这个规范所涵盖的操作将提高用户处理图像的能力。它包括的操作有对比度增强、剪切、缩放、几何弯曲和频率范围处理。
这种类型的功能可应用于各种领域,如天文学、医学图像处理、科学目视表示、气象学和摄影。
Image I/O
这种 API 定义了一种可读/写不同格式图像的可插式框架。这种新的 API 正在由 Java Community Process 设计。
Java Media Framework(JMF)
JMF 是一种 API,可以将音频、视频和其它基于时间的媒体整合到 Java 应用程序和 applet 中。这个可选的包扩展了 J2SE 平台的多媒体功能。
Speech
Java Speech API 允许开发人员将语音技术整合到 Java applet 和应用程序的用户界面中。这种 API 规定一个跨平台的接口来支持命令―控制识别器、听写系统和语音合成器。
这个综合 API 被分成几个规范:
Java Speech API 规范(Java Speech API Specification,JSAPI)
Java Speech API 程序员指南
Java Speech API 语法格式规范(Java Speech API Grammar Format Specification,JSGF)
Java Speech API 标记语言规范(Java Speech API Markup Language Specification,JSML)
这个 API 没有 Sun 公司的参考实现,但是有许多第三方实现,包括 Speech for Java(可以从 IBM alphaWorks 获得),它使用 ViaVoice 来支持语音命令识别、听写和文本到语音的合成。
清单 2. 举例说明了 Java Speech API 中的语音合成。它还使用 JSML 来控制合成器朗读文本的方式(定义音高、速度、重音等等)。
清单 2. 合成和 JSML
2 public class TrySpeech {
3 public static void main(String args[]) {
4 Synthesizer synthesizer = Central.createSynthesizer(null);
5 synthesizer.allocate();
6 try {
7 synthesizer.speak("Hello I am a computer", null);
8 synthesizer.speak(
9 "Hello I am a <EMP>computer</EMP>", null);
10 synthesizer.speak(
11 "Hello I am a <PROS PITCH="+10%">computer</PROS>",
12 null);
13 } catch (Exception e) { e.printStackTrace(); }
14 }
15 }
16
1.4 版本中对 UI 做的更改
即将发行的发行版,版本 1.4(代号为 Merlin)将展示许多新功能,同时还对许多错误进行了必需的修正。我们将重点阐述其中的一些变化。
Swing 有什么新特性
Merlin 发行版将给 Swing 工具包带来广泛的提高。新功能包括:
一个用于不确定时间的进度条,它将向用户说明操作,而不用确定完成的程度。在您预先不知道某些事会用掉多少时间时,这些组件将会很有用(例如建立网络连接)。
JSpinner 组件,它让用户使用箭头按钮在列表中滚动,从一个有序的列表中进行选择。
JFormattedTextField 组件,它让开发人员限制文本组件中允许的字符集。这个功能在输入日期和数字时非常有用。
增强了新的 JTabbedPane 以允许可滚动的制表页。目前当制表页不适合全部放在一行时,它们就会溢出到多个行中去,这对于用户来说是非常糟糕的,因为在选择另一行的制表页时窗格就必须重新排列制表页。这里采用的另一种办法时将所有的制表页保持在一行,但是提供箭头按钮来实现沿着行的滚动。
Windows look-and-feel 的增强使其能够更紧密地匹配本机平台。这些增强包括为匹配 Windows 2000 而对外观所做的改变,比如标题栏的渐近填充,以及与 Windows 桌面更好的集成以响应用户对桌面设置的更改。
大量的错误被修正,还有一些较小的增强,包括为 Swing 事件附加声音的功能。
AWT 得到一个新的焦点模型
在发行版 1.4 中 AWT 被赋予一种全新的焦点模型,很久以来这一直是个问题区域。现有的焦点模型非常令人头痛,因为它存在无数的错误,并且功能很少,比如不能查询当前哪个组件拥有焦点。产生问题的原因通常是:不同的平台处理输入焦点的方式不同,以及新的轻量级组件要求单独处理焦点所带来的复杂性。
新模型已经尽可能使用共享代码实现;平台相关的代码被最小化。新模型的核心是 java.awt.KeyboardFocusManager 类。这个类将提供公共 API 调用来查询和设置焦点状态的许多方面,比如当前哪个组件享有焦点,还有焦点遍历循环中组件的顺序。
最后一点:新的焦点模型与当前各个版本不是完全向后兼容的,所以现有的应用程序将需要彻底的测试。
其它 AWT 功能
用一个滚动轮作为鼠标中键的鼠标非常流行,所以增加了对它的支持。它采用的形式为,一个新的 MouseWheelEvent 类、一个 MouseWheelListener 接口和一个新的 java.awt.Component 类的 addMouseWheelListener() 方法(和对应的 removeMouseWheelListener() 方法)。
增加了对 Headless Java. 的支持。这个增加意味着,在服务器上运行的 Java 应用程序在没有 GUI 环境的情况下也仍然能够使用 AWT,例如,在内存中创建图像以便通过网络发出。
最后,其它的更改包括对拖放功能的增强、创建无修饰框架的能力,以及众多错误的修正。