Projects / Barista


Barista is a Java [dis]assembler and class file manipulation library. It is part of the OCaml-Java project.


Recent releases

  •  07 Mar 2013 21:19

    Release Notes: This release supports OCaml 4.00.1 and Camlzip 1.05. A new "graph" command has been added, allowing generation of a graph of classes references from a list of archives (supported file formats: Dot, GEXF, and GraphML). New modules have been added for elements lookup, manifest handling, and archive construction. Various improvements have been made regarding classpaths, performance for class encoding (about a 50% speed-up), performance for stack state computations (about a 30% speed-up), optimization of switches, and peephole optimizations.

    •  13 May 2012 10:28

      Release Notes: This version provides minor enhancements, and fixes several critical bugs. Special '*.sym' and '*.war' files can now be used in the class path, and Java home detection has been improved (using '/usr/libexec/java_home' under Mac OS X and 'JAVA_HOME' everywhere else). A new peephole rule allows optimization of load/load sequences. Fixed bugs include: incorrect packing of int32 into int64 (#99), stack maps when double/long is followed by top, locals size when over 255, and graph flattening when wide GOTOs are used.

      •  21 Dec 2011 17:17

        Release Notes: Java 1.7 is now used by default. A syntax extension for both 'exception pattern' (BARISTA_ERROR) and Unicode literals (@"string" and @'c') has been introduced. Bugs #73 (uniform handling of dependencies) and #83 (correct construction of constant pool w.r.t. LDC instructions) were fixed.

        •  15 Jul 2011 04:47

          Release Notes: An update was made for Objective Caml 3.12.1 and Camomile 0.8.3. The "src" directory was reorganized. A major refactoring of the code was made (with an impact on the API). Executable names were changed to "barista.byte" and "barista.native". Peephole optimizations were made. Optimization of stack frames, exception tables, and "transitive" jumps was done. Full support for Java 1.7 was added. The manual was improved. The Java API has been removed.

          •  06 Feb 2010 20:15

            Release Notes: This version introduces the "StackState" (for stack/locals manipulation), "ControlFlow" (for control flow information as a graph), and "Code" (for computation of stack/locals from instructions) modules. It also introduces "-flow" (to generate flow graph for a method) and "-generate-stack-infos" (to generate stack elements) command-line switches. Several bugs were fixed regarding support for ocamlfind, invalid padding size for switch instructions, and invalid handling of "@LineNumber".


            Project Spotlight


            A Fluent OpenStack client API for Java.


            Project Spotlight

            TurnKey TWiki Appliance

            A TWiki appliance that is easy to use and lightweight.