JVM SE8 implementation in Haskell
Usage:
Display class contents in relatively human readable form (no constant pool, only symlinks)
stack exec javelin disasmSemantics acceptance/TreeMultimapNaturalTest.class
Disassemler
stack exec javelin disasm acceptance/TreeMultimapNaturalTest.class
Disassembler with traced references to constant pool
stack exec javelin disasmFull acceptance/TreeMultimapNaturalTest.class
Bytecode statistics
stack exec javelin stats acceptance/ [output.textile]
Examples: Guava opcodes statistics, Java 8 standard library (rt.jar) statistics
Parsing classpath, traversing it and loading class bytes
stack exec javelin classpath "./sample-classpath/" "com/google/common/collect/Lists"
Loading class with all dependencies
stack exec javelin loadClass "./sample-classpath/" "com/google/common/collect/Lists"
Roadmap:
Phase I, Reconnaissance. Provide the most basic implementation of every level (loading, resolution, init, runtime structures, command execution, etc). These implementations may skip some essential functionality, but will make it possible to execute JVM bytecode. Implementations don't contradict spec, but do not reflect all spec requirements.
Phase II. Implement stuff that was left out in phase I, but still skip parts of spec that are not of any interest to the author (for now)
Phase III, either implement skipped JVM features, or make some kind of product out of this codebase. I have some ideas.
544 commits
Haskell
68.1%
HTML
28.9%
Java
3.0%
JVM SE8 implementation in Haskell
Usage:
Display class contents in relatively human readable form (no constant pool, only symlinks)
stack exec javelin disasmSemantics acceptance/TreeMultimapNaturalTest.class
Disassemler
stack exec javelin disasm acceptance/TreeMultimapNaturalTest.class
Disassembler with traced references to constant pool
stack exec javelin disasmFull acceptance/TreeMultimapNaturalTest.class
Bytecode statistics
stack exec javelin stats acceptance/ [output.textile]
Examples: Guava opcodes statistics, Java 8 standard library (rt.jar) statistics
Parsing classpath, traversing it and loading class bytes
stack exec javelin classpath "./sample-classpath/" "com/google/common/collect/Lists"
Loading class with all dependencies
stack exec javelin loadClass "./sample-classpath/" "com/google/common/collect/Lists"
Roadmap:
Phase I, Reconnaissance. Provide the most basic implementation of every level (loading, resolution, init, runtime structures, command execution, etc). These implementations may skip some essential functionality, but will make it possible to execute JVM bytecode. Implementations don't contradict spec, but do not reflect all spec requirements.
Phase II. Implement stuff that was left out in phase I, but still skip parts of spec that are not of any interest to the author (for now)
Phase III, either implement skipped JVM features, or make some kind of product out of this codebase. I have some ideas.
544 commits
Haskell
68.1%
HTML
28.9%
Java
3.0%