Free Java Tools, Decompilers, Disassemblers, Virtual Machines, Debuggers, Resources
This page lists free Java resources and tools: Java disassemblers, decompilers, Java IDEs, Java Virtual Machines (JVM), Java debuggers, and the like.
Looking for a Java book? One frequently recommended book on Java is Java in a Nutshell . I use the first edition of this book myself to learn Java and have found it most usable. The later editions include support for JDK 1.1, 1.2 and 1.3, as well as extended the explanations to make it easier for non-C programmers to understand the book (the first two editions targeted C programmers).
Due to the large size of the later versions of the language, the Java Foundation Classes (which you will need if you are writing Java applets) are covered separately in the companion book, Java Foundation Classes in a Nutshell . If you learn best through studying examples, the author also has a book Java Examples in a Nutshell: A Tutorial Companion to Java in a Nutshell . You'll probably get your program up fastest if you model it on an existing working example.
Disclaimer
The information provided on this page comes without any warranty whatsoever. Use it at your own risk. Just because a program, book or service is listed here or has a good review does not mean that I endorse or approve of the program or of any of its contents. All the other standard disclaimers also apply.
Free Java Decompilers and Java Class Browsers
jclassinfo
jclassinfo is a utility written in C (with the source code provided) that reads Java class files and provides you information about the class, its dependencies and so on. It supports both Windows and Linux.
JAD
Jad reads one or more Java class files and converts them to Java source files which can be compiled again. It is able to comment Java source code with JVM bytecodes. It is available for Windows 95/98/NT, various Unices (eg Linux, Rhapsody, AIX, Solaris, FreeBSD) and OS/2.
Free Java Disassemblers
Javalyzer
Javalyzer is a Java class disassembler. It requires Windows 95, 98 or NT with Internet Explorer 4.01 and above.
Free Java Virtual Machines (JVM)
JamVM
JamVM is a Java Virtual Machine that conforms to the JVM specification version 2 (blue book). It is designed to supports the full specification, including object finalisation, the Java Native Interface (JNI) and the Reflection API. Supported platforms include LinuxPPC, Mac OS X/Darwin, Linux for i386 and Linux for ARM processors.
Kaffe OpenVM
Kaffe is a Java virtual machine (JVM), developed independently of Sun, that supports PersonalJava 1.1 bytecode and comes with its own standard class libraries, beans, Abstract Window Toolkit (AWT), and native libraries. There is even a just-in-time (JIT) compiler. The entire works comes with source code (under LGPL). If you need some other license for the code, the site says that you can actually pay them for a license with less encumberances.
Japhar
This Java virtual machine, from the Hungry Programmers, comes with source code (under LGPL). Like Kaffe, it was written independently of Sun. It looks like it supports a lot of Java 1.1 and 1.2.
Free Java Debuggers and Lint
Java PathFinder
Java PathFinder (JPF) is verifies Java bytecode programs. It is "a Java Virtual Machine (JVM) that is used as an explicit state software model checker, systematically exploring all potential execution paths of a program to find violations of properties like deadlocks or unhandled exceptions" (quoted from the website). It may be useful in locating hard-to-test concurrency defects in multithreaded programs.
ODB - Omniscient Debugger
ODB, or the Omniscient Debugger, is Java debugger written in Java that collects information about your program at certain points of interest in a program run. The programmer can then explore the history of the run. The ODB is released under the GNU GPL.
Jlint: Java Program Checker
Like the lint utility which checks C programs, jlint is a program checker that scrutinizes your Java source code for suspicious constructs that might indicate a program bug. The program is released under the GNU GPL. Binaries are available for Windows. For other platforms, you can compile the code yourself using a C++ compiler like GNU gcc.
Free Java Compiler Construction Tools
Note: more compiler construction tools can be found on the Free Compiler Construction Tools: Lexical Analyzers, Parser Generators, Back-End Generators, Optimizer Generators page.
Byacc/Java
This is a version of Berkeley yacc modified so that it can generate Java source code. You simply supply a "-j" option on the command line and it'll produce the Java code instead of the usual C output. You can either get the free source code and compile it yourself, or download any of the precompiled binaries for Solaris, SGI/IRIX, Windows 95/NT, and Linux. Like the byacc original, your output is free of any restrictions, and you can freely use it for any purpose you wish.
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.
ANTLR
ANTLR generates a recursive descent parser in C, C++ or Java from a predicated-LL(k>1) grammar. It is able to build ASTs automatically.
SableCC http://www.sablecc.org/
This is an object-oriented framework that generates DFA based lexers, LALR(1) parsers, strictly typed syntax trees, and tree walker classes from an extended BNF grammar (in other words, it's a compiler generator). The program was written in Java itself and runs on any Java 1.1 (or later) system.
Java Compiler Compiler (JavaCC) - Java Parser Generator
This Java parser generator is written in Java and produces pure Java code. It even comes with grammars for Java 1.0.2, 1.1 as well as HTML. It generates recursive descent parsers (top-down) and allows you to specify both lexical and grammar specifications in your input grammar. In terms of syntactic and semantic lookahead, it generates an LL(1) parser with specific portions LL(k) to resolve things like shift-shift conflicts. The input grammar is in extended BNF notation. It comes with JJTree, a tree building preprocessor; a documentation generator; support for Unicode (and hence internationalization), and many examples. There are numerous other features, including debugging capabilities, error reporting, etc.
Free Java IDEs
(Integrated Development Environment)
and Editors
Listed on this page are integrated development environment (IDE) specifically designed for writing Java code. These tools often allow you to compile and debug your Java program from the editor environment, as well as browse through your classes, etc.
Free Java IDE, Free Java Editors
Gel
Gel is an IDE for Java that features syntax highlighting (Java, JSP, HTML, XML, C, C++, Perl, Python, etc), unlimited undo and redo, column selection mode, block indent and unindent, highlighting of matching braces, spell checking, automatic positioning of closing braces, auto indent, regular expression searches, find in files, code completion (Java and JSP), parameter hints, identifier hints, context sensitive help linked to Javadoc, class browser, project management, integrated support for ANT and JUnit, differencing tool to compare files, etc. It works only on Windows (it was not written in Java).
DrJava Java IDE
DrJava is an integrated development environment for Java, released under the GNU GPL, that allows you to interactively evaulate Java expressions.
BlueJ Java IDE
BlueJ is a Java IDE that has a built-in editor, compiler, virtual machine and debugger for writing Java programs. It also has a graphical class structure display, supports graphical and textual editing, allows interactive object creation, interactive testing and incremental application building.
JIPE Java IDE
Jipe is a free Java IDE written in Java. It allows you to write and test Java applications and applets. Among its features are syntax highlighting, a Methods speedbar and project management. Since it's written in Java, it is presumably portable to all operating systems that has a Java Virtual Machine. The author appears to have tested it on both Windows and Linux.
JCreator Java IDE LE (Light Edition)
The light edition of this IDE for Java has support for project management, a syntax highlighting editor, wizards, class viewer, package viewer, tabbed documents, JDK profiles (which allows you to work with multiple Java Development Kits), a customizable user interface, etc. JCreator runs on Windows 95, 98, NT4, 2000 (and presumably Windows ME too).
NetBeans
NetBeans is a cross-platform open source IDE for Java that comes with a syntax highlighting code editor that supports code completion, annotations, macros, auto-indentation, etc. It includes visual design tools (wizards) for code generation. It integrates with numerous compilers, debuggers, Java Virtual Machines and other tools.
RealJ
RealJ is a free Java development environment for Windows 95, 98 and NT, that: allows you to edit, compile and run Java applets and applications; has a class and function browser, syntax highlighting, integrated JDK reference in WinHelp format; and has the ability to go straight to the offending bit of source code by double-clicking on the compiler error message. You can also highlight a Java keyword or classname in the source editor, and go straight into the JDK reference by pressing F1. (Note: RealJ was formerly called FreeJava.)
|