GCJ

GCJ Home
GCC Home
Status
FAQ
Documentation
Contributing
Done with GCJ

About GCC

Mission Statement
Timeline
Mailing lists
Contributors
Steering Committee

Documentation

Installation
· Platforms
· Testing
Manual
FAQ
Further Readings

Download

Releases
Snapshots
Mirror sites
Binaries

"Live" Sources

CVS read access
Rsync read access
CVSup mirrors
CVS write access

Development

Development Plan
· (tentative timeline)
Contributing
...Why?
Open projects
Front ends
Back ends
Extensions

Bugs

Known bugs
How to report
Bug database
...Management


Get our announcements:

The GNU Compiler for the Javatm Programming Language

What is GCJ?

GCJ is a portable, optimizing, ahead-of-time compiler for the Java Programming Language. It can compile:

  • Java source code directly to native machine code,
  • Java source code to Java bytecode (class files),
  • and Java bytecode to native machine code.

Compiled applications are linked with the GCJ runtime, libgcj, which provides the core class libraries, a garbage collector, and a bytecode interpreter. libgcj can dynamically load and interpret class files, resulting in mixed compiled/interpreted applications.

Most of the APIs specified by "The Java Class Libraries" Second Edition and the "Java 2 Platform supplement" are supported, including collections, networking, reflection, and serialization. AWT is currently unsupported, but work to implement it is in progress.

Debugging is supported using recent versions of the GNU debugger, GDB. A short tutorial on using GDB to debug GCJ-compiled applications is available.

In addition to regular native programming, GCJ can be configured as a cross-compiler, suitable for embedded systems programming.

GCJ is part of the GNU Compiler Collection (GCC). GCC, GDB and related tools are Free Software. libgcj is slowly being merged with GNU Classpath. (You can see the status of the merge between libgcj CVS and GNU Classpath CVS. And the status of the gui branch merge.)

Many free software Java packages have been ported to work with GCJ. A collection of such packages are in the rhug project. Both sources and RPMs are available.

For javax.crypto support, we recommend the use of GNU Crypto.

For JSSE (including javax.net, javax.net.ssl, and javax.security.cert support), we recommend Jessie.



GCJ News

February 15, 2005 Thomas Fitzsimmons has checked in an implementation of libjawt, the AWT Native interface. Among other things, this enables the JOGL (OpenGL for Java) bindings to work.
February 1, 2005 We've merged GNU JAXP into the core. This includes many classes in javax.xml, plus updated versions of org.xml.sax and org.w3c.dom.
November 25, 2004 John David Anglin checked in a patch to enable libjava to be built by default on hppa-unknown-linux-gnu.
November 22, 2004 We're pleased to announce that the gcj binary compatibility branch has been merged to the trunk. This work includes a new ABI which allows precompiled code to follow the binary compatibility rules of the Java programming language.
September 21, 2004 Andreas Tobler imported the new javax.crypto, javax.crypto.interfaces, javax.crypto.spec, javax.net, javax.net.ssl, javax.security.auth, javax.security.auth.callback, javax.security.auth.login, javax.security.auth.x500, javax.security.sasl and org.ietf.jgss packages from the latest GNU Classpath 0.11 developer snapshot release. These packages will be an official part of then next major release. Extra crypto algorithms can be obtained from the GNU Crypto project, a full TLS implementation is provided by the Jessie project.
July 16, 2004 AWT and Swing support continues to improve rapidly. Thomas Fitzsimmons of Red Hat added support for the AWT 1.0 event model, still used by many web applets. This means that Slime Volleyball now runs on GCJ and gcjwebplugin. Here's the evidence!
July 16, 2004 GCJ in the press! The July issue of Linux Journal features an article on building the Eclipse IDE to native code using GCJ: Eclipse goes native. The July issue of Doctor Dobbs Journal also features an article (not available online) on GCJ and the Compiled Native Interface (CNI).
March 9, 2004 Thanks to Wes Biggs and the other GNU Regexp authors, Mark Wielaard (for merging into Classpath) and Anthony Green (for merging into libgcj), we now have support for java.util.regex. This arrives a little too late for gcc 3.4, but it will appear in the next major release.
January 22, 2004 Graydon Hoare has checked in a patch to implement Swing buttons. This is the first working Swing code, a major improvement. See the screen shot.
January 9, 2004 Andrew Haley has checked in a large reorganization of -findirect-dispatch. This is an important step toward the new binary compatibility ABI.
Less recent GCJ news

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to contact the FSF.

These pages are maintained by the GCC team.

For questions related to the use of GCC, please consult these web pages and the GCC manuals. If that fails, the gcc-help@gcc.gnu.org mailing list might help.
Please send comments on these web pages and the development of GCC to our developer mailing list at gcc@gnu.org or gcc@gcc.gnu.org. All of our lists have public archives.

Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.

Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.

Last modified 2005-02-24 Valid XHTML 1.0