A library for reading Java class-files https://github.com/ucla-pls/jvm-binary#readme
|Latest on Hackage:||0.1.0|
This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.
A library for reading and writing Java class-files. To get started
Language.JVM file should be sufficient for most uses.
If you want to access Code elements of methods it is recommended to
Language.JVM.Attribute.Code qualified, like this:
import Language.JVM import qualified Language.JVM.Attribute.Code as Code import qualified Data.ByteString.Lazy as BL main :: IO () main = ecfl <- readClassFile <$> BL.readFile "test/data/project/Main.class" case ecfl of Right clf -> do print (cThisClass clf) print (cSuperClass clf) Left msg -> print msg
There are two stages in the current state of the repository.
Low is closer
to the class-file, while the
High stage is easier to work with. The reason
that we have the two stages is that the class-file representation has indices
into the Constant Pool. The
High stage eliminates all these problems.
- Add more Attributes as to the docs.
- Add documentation for Code
- Setup regular benchmarks
Use stack to build, test, and benchmark.
Add better method and field descriptions
Introducing a stageing system
Added Code writing
Changed Megaparsec to Attoparsec of improved performance.
A lot of extra work
- Fix problems with package.yaml file
- Add ConstantValue
- Add Exceptions
- Add StackMapTable
- Add BootstrapMethods
The initial version