The rhug project is no longer necessary thanks to the great gcj and GNU Classpath hackers. All of the rhugified packages below build and run out of the box, both natively and interpreted, with the tools found in GCC 4. The contents of this website are now frozen for historical/hysterical purposes. Thank you! Anthony Green

a collection of java packages built with gcj



mailing list

source code

hacking howto

gcj is a both a native code compiler for the java programming language as well as a clean-room execution environment for static executables, dynamic shared libraries, and java bytecode. See http://gcc.gnu.org/java for details.

gcj is conceptually closer to a C or C++ compiler than the average java compiler. Most open source java projects have build procedures tailored for traditional java compilers and execution environments. These procedures often aren't easy to adapt to gcj's view of the world. That's where rhug comes in.

rhug is a collection of important open source java packages configured to build and install with the automake/autoconf/libtool trinity familiar to many C and C++ programmers. The end result is a collection of executables and shared libraries suitable for execution without any supplementary java runtime environment, as well as JAR files and CNI header files suitable for developers using gcj.

the packages

ByteCode Engineering Library

version 5.0

The Byte Code Engineering Library (formerly known as JavaClass) is intended to give users a convenient possibility to analyze, create, and manipulate (binary) Java class files (those ending with .class). Classes are represented by objects which contain all the symbolic information of the given class: methods, fields and byte code instructions, in particular. Such objects can be read from an existing file, be transformed by a program (e.g. a class loader at run-time) and dumped to a file again. An even more interesting application is the creation of classes from scratch at run-time. The Byte Code Engineering Library (BCEL) may be also useful if you want to learn about the Java Virtual Machine (JVM) and the format of Java .class files.

Bouncy Castle JCE

version 1.12

The Bouncy Castle Crypto APIs consist of a cleanroom implementation of the JCE 1.2.1 specification, as well as a provider for the JCE and JCA. Note: rhug contains no crypto code, just build infrastructure for this software. You'll have to download it yourself from the Bouncy Castle web site before configuring and building rhug. See http://www.bouncycastle.org.

Bean Scripting Framework

version 2.2

The Bean Scripting Framework (BSF) is an architecture for incorporating scripting into Java applications and applets. Scripting languages such as Netscape Rhino (Javascript), Tcl, and Python are commonly used to augment an application's function or to script together a set of application components to form an application. There are many scripting languages implemented in Java, including Netscape's Rhino implementation of ECMAScript, Jacl and JPython. While each of these is embeddable in Java and provides the ability to interact with Java from the language, using a specific scripting language binds an application to that single language. The Java world currently does not have a well-defined scripting architecture that allows Java applications to incorporate scripting easily - BSF is such an architecture. The BSF architecture allows an application to be scripted from any BSF supported language, without any scripting language dependencies.

The GNU Classpath Extensions' JavaBeans Activation Framework

version 20030319

JAF provides a means to type data and locate components suitable for performing various kinds of action on it. It extends the UNIX standard mime.types and mailcap mechanisms for Java.

The GNU Classpath Extensions' JavaMail

version 20031006

JavaMail provides a complete internet mail system, including MIME. It provides a complete implementation of JavaMail 1.3, and a broad range of providers including the only JavaMail NNTP provider.

Jakarta Commons BeanUtils

version 1.6.1

The BeanUtils component provides easy-to-use JavaBeans interfaces to non-bean objects through the use of reflection and introspection.

Jakarta Commons Collections

version 2.1

The Collections package aims to fill certain holes in Sun's collections API. Among the features of this package are: special-purpose implementations of Lists and Maps for fast access, adapter classes from Java1-style containers (arrays, enumerations) to Java2-style collections, and methods to test or create typical set-theory properties of collections such as union, intersection and closure.

Jakarta Commons DBCP

version 1.1

A database connection pool library.

Jakarta Commons Digester

version 1.3

The Digester package lets you configure and XML->Java object mapping module, which triggers certain actions called rules whenever a particular pattern of nested XML elements is recognized. A rich set of predefined rules is available for your use, or you can create your own. This is particularly useful for reading XML based application configuration files.

Jakarta Commons fileUpload

version 1.0

The Commons FileUpload package makes it easy to add robust, high-performance, file upload capability to your servlets and web applications. FileUpload parses HTTP requests which conform to RFC 1867 , "Form-based File Upload in HTML". That is, if an HTTP request is submitted using the POST method, and with a content type of "multipart/form-data", then FileUpload can parse that request, and make the results available in a manner easily used by the caller.

Jakarta Commons Logging

version 1.0.2

The Logging package is an ultra-thin bridge between different logging libraries. Commons components may use the Logging API to remove compile-time and run-type dependencies on any particular logging package, and contributors may write Log implementations for the library of their choice.

Jakarta Commons Modeler

version 1.0

Modeler is a package designed to make using the Java Management Extensions (JMX) much easier to use.

Jakarta Commons Pool

version 1.1

Pool provides an Object-pooling API, with three major aspects: A generic object pool interface that clients and implementors can use to provide easily interchangable pooling implementations. A toolkit for creating modular object pools. Several general purpose pool implementations.

Java Cup

version 0.10j

CUP is a system for generating LALR parsers from simple specifications. It serves the same role as the widely used program YACC and in fact offers most of the features of YACC. However, CUP is written in Java, uses specifications including embedded Java code, and produces parsers which are implemented in Java.

ecj: Eclipse Compiler for the Java Programming Language

version 0.298

Hidden within the Eclipse project is a powerful bytecode compiler. We have extracted that compiler from the Eclipse framework code, and provide it as a stand-alone command line compiler (ecj). When built with gcj, it appears to be the fasted bytecode compiler available today.


version 1.1.0

The gnu.crypto package aims at providing free, versatile, high-quality, and provably correct implementations of cryptographic primitives and tools in the Java programming language for use by programmers and end-users.


version 1.1.3a

The gnu.regexp package is a pure-Java implementation of a traditional (non-POSIX) NFA regular expression engine. Its syntax can emulate many popular development tools, including awk, sed, emacs, perl and grep.


version 1.5

Ant is a Java-based build tool. In theory, it is kind of like Make, but with a different set of wrinkles.


version 1.1.3

With log4j it is possible to enable logging at runtime without modifying the application binary. The log4j package is designed so that these statements can remain in shipped code without incurring a heavy performance cost. Logging behavior can be controlled by editing a configuration file, without touching the application binary.

Jakarta Regexp

version 1.2

Regexp is a 100% Pure Java Regular Expression package that was graciously donated to the Apache Software Foundation by Jonathan Locke. He originally wrote this software back in 1996 and it has stood up quite well to the test of time. It includes complete Javadoc documentation as well as a simple Applet for visual debugging and testing suite for compatibility. This package is intended to be an answer to a question we commonly hear in the Java world: "Why isn't there a decent regular expression package


version 1.06

Jasmin is a Java Assembler Interface. It takes ASCII descriptions for Java classes, written in a simple assembler-like syntax, and using the Java Virtual Machine instruction set. It converts them into binary Java class files suitable for loading into a Java interpreter.


version 3.8.1

JUnit is a regression testing framework for Java.

PostgreSQL JDBC Drivers

version 7.3b2

Type-4 JDBC 2 drivers for PostgreSQL 7.3.


version 1.5R3

Rhino is an open-source implementation of JavaScript written entirely in Java. It is typically embedded into Java applications to provide scripting to end users.


version 2.4.1

Xalan is an XSLT processor for transforming XML documents into HTML, text, or other XML document types. It implements the W3C Recommendations for XSL Transformations (XSLT) and the XML Path Language (XPath). It can be used from the command line, in an applet or a servlet, or as a module in other program.


version 2.2.1

Xerces (named after the Xerces Blue butterfly) provides world-class XML parsing and generation. Fully-validating parsers are available for both Java and C++, implementing the W3C XML and DOM (Level 1 and 2) standards, as well as the de facto SAX (version 2) standard. The parsers are highly modular and configurable. Initial support for XML Schema (draft W3C standard) is also provided.


version 1.1

A library for working with catalogs defined by the OASIS Entity Resolution Technical Committee

Anthony Green

This page is maintained in XML and uses the Xalan XSLT processor to generate HTML.