OPAL is a platform for analyzing and engineering Java byte code that is written in Scala and which leverages Scala's advanced language features to provide a new and previously unseen level of customizability and scalability. OPAL was designed from the ground up with extensibility, adaptability and scalability in mind.
In general, OPAL facilitates writing concurrent analyses and is already highly parallelized.
On top of the framework for representing and engineering Java byte code, OPAL in particular provides a framework for the abstract interpretation of Java bytecode. Additionally, it has built-in support for the analysis of static source code dependencies and generally provides extensive support for pattern-matching on Java bytecode.