GPC: Vona's Java Utils

This is a collection of general purpose (mostly) Java code and (mostly) related scripts written by Prof. Vona. The best way to learn about using these utilities is to read the javadoc and the source.

  • A makefile-based generic recursive build system for (mostly) Java projects. It includes features beyond just compilation, including documentation build, distribution packaging, and pubishing.
  • CompileServer accelerates Java builds by delegating compilation tasks to an always-running server process, avoiding JVM startup costs for each complier invocation.
  • Some developer scripts and dotfiles.
  • A color sublibrary including a command-line colorspace conversion utility, ICCConvert, and a color scheme generation system based on [Bourges, Jean. (1997). Color Bytes. Forest Hills, New York: Chromatics Press, Inc.].
  • RMIWrap, a code generator that eases the difficulty of adding RMI capability to an arbitrary Java class.
  • Utilities for detecting and working with Java system and library versions and runtime availability.
  • Utilities for dealing with Java3D scene graphs outside Java3D, including a JOGL-only replacement for Java3D's GeometryArray and accessors for Java3D vertex, index, and primitive datastructures.
  • a JOGL-only immediate mode renderer for Java3D scene graphs, with optimization for JOGLGeometry and Widgets that define collections of geometries, including a number of pre-defined simple shapes like SphereWidget.
  • ActionMapper, a layered system for dynamic mappings from key and mouse actions to handlers.
  • Some conveniences for using VT100-compatible terminals in Java, including terminal type detection, cursor placement, text coloring, and non-blocking keyboard input on Unix-like systems including OSX.
  • A log implementation that integrates with Java's standard Logger infrastructure but which also generates terminal output in color and behaves reasonably well in applet contexts.
  • SuperClock, a timebase that can be accelerated or decelerated with respect to wall-clock time.
  • VonaMath, a collection of (mostly geometric) short math routines I've found useful.
  • SVD driver infrastructure with JLAPACK and netlib-java backends.
  • A generic prioritized damped least squares real-time numeric solver for differentiable constraint systems based on [Paolo Baerlocher and Ronan Boulic. An inverse kinematics architecture enforcing an arbitrary number of strict priority levels. The Visual Computer 20, pp 402--417, 2004].
  • A 3D rigid transform library based on the exponential map parameterization for rotations, as described in [Grassia. Practical parameterization of rotations using the exponential map. Journal of Graphics Tools, 3(3):29-48, 1998], and corresponding interpolation and interaction systems.
  • A set of DAE utilities for reading and writing a subset of COLLADA 1.5. Uses JAXB.
  • Our modified version of JScheme.
  • Download and Dependencies

    Vona's Java Utils is released under the GNU GPLv2. The distribution jars (amd64, i586, nonatives) come with everything rolled into one: sourcecode, Java class files, html documentation, makefiles, native binaries (if any) for the indicated architecture, etc. These jars contain both VonaUtils and its dependencies, which are:

    The supported operating systems for native binaries are Linux, Macintosh OS X, and Windows. Vona's Java Utils does not itself use native binaries, but some of its dependencies do as noted in the list above.

    A lighter-weight jar is also available which excludes all the third-party dependencies. The extra-light jar excludes dependencies, our modified version of JScheme, source code, and documentation.

    Run this with any of the jarfiles to get the specific revision number and build timestamp:

    java -cp Vona-*.jar vona.Version

    Building the Code

    The build has been tested on GNU/Linux and Macintosh OS X. Other platforms may work. You should only need to build the code if you have made a change; it is distributed with pre-built binaries.

    The build system is based on the Super-Ninja Makefile. You'll need to have already installed

    You'll probably want to create a directory into which to unpack the jar (jar xvf Vona-newest-*.jar). The code for Vona's Java Utils proper will be under the unpacked directory vona/; sibling directories contain the bundled dependencies. The build system will find these. Alternately, you can unpack Vona-lite-newest.jar, and in that case, the build system will look for jarfiles for the pure java deps in the location specified by its EXT_DIR variable, which you can inspect via make show-settings (see the makefile for how it is derived).

    From within the vona/ directory,

    Disclaimer

    THIS INFORMATION AND/OR SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS INFORMATION AND/OR SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.