{"repo":"cojen/Maker","free":true,"listed":false,"github":"https://github.com/cojen/Maker","clone":"git clone https://github.com/cojen/Maker.git","description":"Cojen/Maker is a lightweight, full-featured, low-level dynamic Java class generator designed for ease of use.","language":"Java","stars":72,"topics":["java-bytecode","invokedynamic","java","jvm-bytecode","code-generation","bytecode","jvm"],"license":"Apache-2.0","category":"dev-tools","readme_excerpt":"The Cojen/Maker library is a lightweight, full-featured, low-level dynamic Java class generator which is designed for ease of use. Here's a simple \"hello, world\" example: - Javadocs - Coding patterns - Examples A key feature of the library is that the JVM operand stack isn't directly accessible, which makes it much easier to use. Local variables are used exclusively, and conversion to the stack-based representation is automatic. In some cases, this can result in more local variables than is strictly necessary, but modern JVMs reduce the set using liveness analysis. In addition to simplifying basic class generation, the features of the java.lang.invoke package are fully integrated, but without all the complexity. The ObjectMethods example shows how to define a bootstrap method which generates code \"just in time\". Design features --------------- The API is designed to be very simple, defined by a few interfaces and no public classes. Despite its tiny size, the API supports nearly all of the JVM features and bytecode instructions. Features like generics aren't directly supported, although due to type erasure, dynamically generated classes don't require generics anyhow. Instructions which directly manipulate stack operands aren't supported either, because such access isn't necessary with this API. In order to keep the API simple, some capabilities are merged into common interfaces. In particular, there's no requirement to use the Type class for representing variable types. Instea","default_branch":null,"files":null,"tree":[],"storefront":"/r/cojen","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/cojen/Maker/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}