Java 中的 3D 图形技术及应用案例研究
扈文峰 韩涛
2007-08-20
摘要:随着 Java 技术的不断发展,Java 平台下 3D 图形应用的性能有了极大的提高,结合
Java 开发原有的优势,越来越多的 3D 图形开发者选择了 Java 平台。本文介绍和分析了
Java 平台下若干具有代表性的 3D 图形技术,并在我们的工程案例中使用了其中之一的 JME
技术。
1 、引言
一直以来,由于性能等原因,Java 并不是 3D 图形应用的主流平台,但随着各种新技术
的出现,这种情况有了很大改变。从开始的 JIT、Static compilers,到现代的 HotSpot 技术[1]
[2],使 Java 程序的运行效率越来越高,目前已经接近于 C++程序。此外,通过 JNI 技术,
Java 程序可以调用任意第三方库,包括 OpenGL 和 DirectX 等图形库。基于 JNI 技术,Java
平台上出现了很多 3D 图形 API,包括 Sun 公司在 2003 年推出了可选的 3D 图形包―Java 3D 和
其它第三方的图形 API。
在本文第 2 部分,对 Java 平台中具有代表性的若干 3D 图形 API 做了介绍和分析,并在
第 3 部分中,介绍了在“可视化”领域中应用 Java 图形的一个工程案例。
2 、Java 平台的 3D 图形 API
Java 平台下可以选择的 3D 图形 API 有很多,根据封装层次可以将其分为以下两种:
l Java bindings to OpenGL
l Scene graph APIs
其中属于 Java bindings to OpenGL 的有:GL4Java,LWJGL,JOGL 等。属于 Sence Graph
APIs 的有:JMonkey Engine(JME)、Java3D 等。
2.1、 Java bindings to OpenGL
Java bindings to OpenGL 的 API 是对 OpenGL 做了一层 Java 包装,使得人们可以在 Java
环境中调用 OpenGL 命令。这与 OpenGL 一样可以称为“Render 层次”的图形 API。这一层次