Thursday, August 31, 2006
Free Java Compilers
Excelsior JET Personal Edition
The Excelsior JET Personal Edition is a Java to native code compiler for Windows, that compiles your Java applications into native Windows executables and DLLs. It supports all J2SE 1.3.0 to 1.4.1 platform packages, including AWT/Swing, as well as JNI. There is some support for Java dynamic class loading and your applications can use JNI and Invocation API to interoperate with C, C++ and Delphi, or use COM to interoperate with C++, VB6, VBA (and probably any other language that supports the COM interface). This software requires Windows (obviously).
Toba (Java to C Compiler)
Toba translates Java applications to C source files, from which you can compile into native executables (binaries). The program is distributed in source code form, and has been tested on Linux, Irix 6.2 and Solaris 2.5.
Borland JBuilder Foundation (Java Development Environment)
Borland's JBuilder Foundation is available free of charge from Borland's site. JBuilder is a cross-platform Java development environment for Windows, Linux, Solaris and Mac OS. It includes the AppBrowser integrated development environment (IDE), graphical debugging, extensible source code editor, Java compiler, Java visual designers, wizards, and Two-Way Tools with no proprietary markers. Also included is BeanExpress, which allows you to create Java Beans. You can use CodeInsight to "speed up coding and reduce syntax errors". Java 2 SDK 1.3, JFC/Swing, Graphics2D, serialization, JavaBeans, JNI, etc, are all included in the package. You get a non-expiring free licence to use the package to develop personal, non-commercial software.
AlphaWorks ADK for Win 3.1 (Java Compiler)
Developing Java applications on a Windows 3.1? You'll need this Java compiler from IBM which handles the long filenames, threads, etc, required by Java. Note that development on this compiler has long ceased, although the compiler and documentation are still available.
IBM's Jikes Java Compiler
Jikes is IBM's Java compiler that is supposedly faster than most other compilers. It is also able to compute the dependency requirements in programs and so generate makefiles. If you want faster development cycles, you might also fancy its ability to perform incremental compilations. Platforms supported: Windows 95/NT, AIX, OS/2, Linux, Solaris Sparc. The compiler handles constructs exactly according to the Java specifications. Source code is available under an open source licence.
Sun Microsystems' Java Development Kit (JDK) (Java 2 Platform Second Edition, J2SE)
You can get free Java Development Kits for a number of platforms (Windows, Linux, Solaris SPARC, Solaris x86) from the creator of Java. The kits include the Java compiler, Java debugger and Java class libraries for generating Java bytecode. I find this compiler rather slow.
GNU Compiler for the Java Programming Language (GCJ)
This Java compiler is developed independently of the one by Sun. It is able to generate both Java bytecode and native machine code, as well as convert Java bytecode into native machine code (so theoretically you can even use this compiler to convert a Java program compiled by another compiler into a native binary/executable). It comes with its own class libraries. At the time of this writing, the libraries are still under development and the compiler can only handle version 1.0 of the Java language. It uses the same backend as the EGCS compiler (GNU's C compiler). The advantage of this compiler over Sun's is its ability to generate native machine code - so if you are not coding for the web and simply want to use Java as a programming language, this might be a good compiler to check out.
Guavac Java Compiler for RISC OS
This is the Acorn RISC port of Guavac, a Java source compiler. You can get the compiler, class libraries and the FAQ from the site. It is no longer supported and the last update was on 24 September 1999.
Kiev
This compiler is able to generate Java bytecode from extended Java source code with embedded Prolog source code. Extensions to the Java language include a Prolog-like engine, multimethods, parameterized types, closures, multiple inheritance by interfaces and delegation, arithmetic types, type states and cases, overloaded and user-defined operators, foreach statement, switch statements for types, goto, global method and variables, enum, virtual fields, variable number of arguments, packed fields, bit-fields, etc.