Java is an object-oriented language. * http://www.java.sun.com/ ---++ Compilers * [[Java Decompilers]] * [[Java Dynamic Compilers]] * [[Java Native Compilers]] ---++ Transformation Systems * [[Java Parser Generators]] * Transformation systems for Java operate on an abstract syntax representation of Java source code. Unfortunately there are no standard structures for the abstract syntax of Java. See [[Java Abstract Syntax]] for the available implementations. * [[Java Concrete Syntax]] definitions * Sun's [[Annotation Processing Tool]] for generating or analysing code at compile-time based on annotations. * [[Stratego.WebHome][Stratego/XT]] with [[Stratego.JavaFront][Java Front]] * [[DMS Software Reengineering Toolkit]] * [[Compost Framework]] * [[Tools.JJTraveler][JJTraveler]] -- visitor combinator framework for Java * [[JavaTom][JTOM]] -- pattern matching compiler * [[https://github.com/INRIA/spoon][Spoon]] -- a library for analyzing and transforming Java source code. Analysis and Searching * [[JQuery]] -- query-based source code browser based on Eclipse ---+++ Bytecode * [[Soot Framework]] for bytecode transformations (Jimple) * Apache's BCEL * ASM ---+++ Extensible Compilers * [[PolyglotFramework][Polyglot Extensible Compiler Framework]] * [[AspectBench Compiler]] (abc) for AspectJ * [[OpenJava]] ---+++ Code Generation * [[MetaAspectJ][Meta-AspectJ]] * [[Jakarta Tool Suite]] (JTS), especially the Jak language ---++ Publications Tools and methods for Java [[Program Understanding]] and [[Reverse Engineering]] are discussed in several of the papers by [[Tarja Systa]]. * Tarja Systä, Kai Koskimies, and HausiMueller. Shimba - An Environment for Reverse Engineering Java Software Systems, _Software Practice and Experience_, 31(4), 2001, pp. 371-394. * Tarja Systä, Understanding the Behavior of Java Programs, In Proc. of the 7th Working Conference on Reverse Engineering (WCRE 2000), Brisbane * Tarja Systä, On the relationships between static and dynamic models in reverse engineering Java software, In Proc. of the 6th Working Conference on Reverse Engineering (WCRE99), Atlanta, Georgia, USA, October 1999, pp.304-313. * See http://www.cs.tut.fi/~tsysta/