Classpath 用例

作者:Robert Schuster,最后编辑于 2005 年 9 月 7 日凌晨
翻译:懒猫 / Stephen Wong,译于广州,2005 年 9 月 12 日
摘要:
基于 Qt4 的 AWT 图形函数对等(peers)
本地 Eclipse - 快速而强劲的集成开发环境
Apache Ant - 基于 Java 的构建工具 适用范围:包括 Fedora Core 在内的所有发行版。 声明:本文档的原文著作权属于 Robert Schuster,译文的著作权属于 懒猫 / Stephen Wong,译文的出版权、发行权属于原文作者、译文作者和 LinuxSir.org 社区共同所有。本文首先公开发布于 LinuxSir.org 社区,转载和/或修订请保留著作权信息和本声明条款。原文作者、译文作者、历次修订者及 LinuxSir.org 社区保留一切法律权利。 本文示范如何可以体验到我们努力中的成果。以前在Java 陷阱中被束缚的自由应用程序在一个完全自由的环境中注入新的活力。因为我们软件的稳定,所以和任何工作环境都没有关系。一切都已经协调好了! 这是给所有为实现这个可能而提供帮助的同伴们的一份礼物,也是一个自由软件发展的有力的示范。 除了本文中所有令人振奋和漂亮的技术资料外,请不要忘记一个热情的社区为你提供了软件自由:请欣赏并分享它们吧! 索引
  1. 基于 Qt4 的 AWT 图形函数对等(peers)
  2. Eclipse - 一种通用的工具平台 - 一个无差别地对任何事物开放可扩展的集成开发环境(IDE)
  3. 本地 Eclipse - 快速而强劲的集成开发环境
  4. Apache Ant - 基于 Java 的构建工具
基于 Qt4 的 AWT 图形函数对等(peers)
  • 最后编辑:2005 年 9 月 7 日
  • 说明:
    • 自 GNU Classpath 0.18 以后,我们为 AWT 图形函数对等而支持新的第 4 版的 Qt 函数库。这意味着 java.awt.Frame、java.awt.Button 等所有可视图形由 Qt 库来绘制和操纵。虽然 Qt4 明显被 GNU Classpath 的底层构建组织所支持,但大部分操作系统仍未将其实装。为了体验由我们自由的 Qt4 绘制的 AWT,下文说明你需要做的事情:
    1. 第一步是下载、编译并安装 Qt 4.0.1 或以上版本。我们建议你在 configure 的时期通过使用 --prefix 参数把它安装到你的 home 目录内的某个位置中。接下来的讨论假设 ${QT4} 就是该库所在的安装目录。
    2. 把 ${QT4}/bin} 放到你的 PATH 环境变量中,并确定当你执行 moc -v 时显示它的版本是 4.0.1 。
    3. 把 ${QT4}/lib 添加到 LD_LIBRARY_PATH 环境变量中(或者在你的操作系统上使用一个等价的机制)
    4. 把 ${QT4}/lib 添加到 PKG_CONFIG_PATH 环境变量中。
    5. 在 Classpath 的源代码目录中执行 autoreconf 。
    6. 使用 --with-qt-peer (及所有其他需要的)参数调用 configure 。
    7. 下载、构建并安装 GNU Classpath 0.18 。
      • 注意:为了修复一个构建问题,在编译 GNU Classpath 0.18 之前请在 native/jni/qt-peer/componentevent.cpp 中插入 #include 。
    8. 运行一个 AWT 应用程序并把系统属性 awt.toolkit 的值设置为 gnu.java.awt.peer.qt.QtToolkit 。
    9. 例如,运行 Classpath AWT 演示应用程序你可以使用
      jamvm -cp examples.zip -Dawt.toolkit=gnu.java.awt.peer.qt.QtToolkit gnu.classpath.examples.awt.Demo
        注意:为此你需要 JamVM 1.3.3,它现在只能从 CVS 获得。
Eclipse - 一种通用的工具平台,一个任何事物都开放可扩展的集成开发环境
  • 最后编辑: 2005 年 9 月 7 日
  • 说明:
    • GNU Classpath 工作组因为能让这个著名而自由的开发环境脱离限制地运行起来而感到非常自豪。
    1. 安装 Eclipse 3.1 并使用最新的 GCC 4.0 快照(snapshot)版本(构建说明,一些发行版已经在它们的试验区域实装了 GCC 4.0 的预发布版本)或者使用 JamVM 1.3.3 (CVS) + GNU Classpath 0.18
    • 我强烈建议你使用一个预先编译好的或者在你的发行版上实装了的 Eclipse 版本。从源代码构建 Eclipse 是一项非常复杂的任务,我不打算在这里加以说明。 注意:按照构建指南,对于 GCJ 4, 请确定你已经调整好 PATH 和 LD_LIBRARY_PATH 这两个环境变量。
    1. 进入 Eclipse 安装目录,运行如下:
      • 对于 GCJ 而言:
    • ./eclipse -consoleLog -debug -vm gij
      • 对于 JamVM 而言:
      PATH=.:${PATH} ./eclipse -consoleLog -debug -vm jamvm -vmargs -mx256m
      • (它阻止了一个问题,这个问题会在找不到 startup.jar 时抛出一个 OutOfMemoryError 。) 注意:在 Gentoo GNU/Linux 上执行的文件将是 eclipse- ,其中 可能是 gtk 或者 motif 。 为了使 Eclipse 在 Kaffe 上运行,你需要从 CVS 中构建它并使用一个启动脚本 。详情请参阅这封邮件
  • 参考资料:
本地 Eclipse - 快速而强劲的集成开发环境
  • 最后编辑:2005 年 8 月 31 日
  • 说明:
    • 既然你让 Eclipse 运行起来了,你可能会对本地编译究竟有多快而感兴趣。好吧,请继续阅读下去。 当然,你需要 GCJ 进行本地编译和执行。请阅读之前发布的安装说明。 用一个系统适用面广的 Eclipse 安装版进行实验不是一件好事。我建议你把整个 Eclipse 目录复制到你的 home 目录内的某个位置进行实验。然后进入这个目录并把以下脚本写入一个文本文件中:
      #!/bin/sh

      gcj-dbtool -n eclipse.db

      for JAR_FILE in `find -iname "*.jar"`
      do
              echo "Compiling ${JAR_FILE} to native"
              gcj -shared -findirect-dispatch -Wl,-Bsymbolic -fjni -fPIC -o ${JAR_FILE}.so ${JAR_FILE}
              gcj-dbtool -a eclipse.db ${JAR_FILE} ${JAR_FILE}.so
      done
      现在运行这个脚本,去喝一杯咖啡,因为这会花一点时间。我这里使用的版本拥有合共 36 兆(压缩了的)类数据的 146 个 jar 文件。当所有工作都做好了的时候,你将会得到一个带有从字节码 Java 类到它们本地相应部分的映射的一个 gcj 数据库文件。这个数据库就在一个叫做 eclipse.db 的文件里面。 用以下命令运行 Eclipse 以体验本地编译令人惊异的能力:
      ./eclipse -consoleLog -debug -vm gij -vmargs -Dgnu.gcj.precompiled.db.path=eclipse.db
      相信了吗? 顺便说一下,这个伟大的东西已经被 Fedora Core 4 收录,并且非常有可能添加到别的发行版中,例如 Ubuntu。 顺便再说一下,Debian 用户可能需要执行 apt-get install gcj-4.0 gcc-4.0 gcc-snapshot 并用 gcc-4.0 和 /usr/lib/gcc-snapshot/bin/gcj-dbtool 代替 gcj 和 gcj-dbtool 。
Apache Ant - 基于 Java 的构建工具
  • 最后编辑:2005 年 3 月 2 日
  • 说明:
    • Ant(“another neat tool”,另一个灵巧的工具)是为了克服基于 Makefile 的系统的局限性而制造的。长期以来这个新工具依赖于非自由的运行机制。我将展示一个从命令行调用 Ant 的简单方法,以及你必须关心的东西。我希望各种发行版的用户阅读这篇文章,并找到一个途径,把基于 GNU Classpath 的虚拟机和 GCJ 整合支持到已为 Ant 写的封装脚本中。 如果不使用 GCJ 则很可能你将使用一个像 JamVM 那样的虚拟机来运行程序,并使用 Jikes 作为编译器。正确的命令行将具有如下特点:
      • 执行的不是 java 而是 jamvm(或者类似的虚拟机)
      • 通过指定 build.compiler 属性把 jikes 设置为缺省的编译器
      • 属性 jikes.class.path 指向 GNU Classpath 的类文件或者它的归档文件
      如果 Ant 的库文件安装在 /usr/share/ant-core/ ,命令行将类似于:
      jamvm -classpath /usr/share/ant-core/lib/ant-launcher.jar
            -Dant.home=/usr/share/ant-core -Dbuild.compiler=jikes
            -Djikes.class.path=/usr/share/classpath/glibj.zip
            org.apache.tools.ant.launch.Launcher
      当正在使用 GCJ 和 GIJ 时,事情会变得容易一点:
      gij -classpath /usr/share/ant-core/lib/ant-launcher.jar
            -Dant.home=/usr/share/ant-core -Dbuild.compiler=gcj
            org.apache.tools.ant.launch.Launcher
      当然,Ant 是本地编译地运行的。参阅 GCC Wiki 的一般说明中关于这一点的说明。当以这种方式运行 Ant 的时候不要忘记使用 gnu.gcj.precompiled.db.path 属性指定 gcj 数据库文件。
相关文章 《如何使用 GCJ 进行二进制兼容性编译》
《Classpath 用例》 附录: 原文的 Web 文档网址:
http://developer.classpath.org/mediation/ClasspathShowcase 欢迎提出您的勘误意见!