Features
The Java language is a complex programming language and a JEMM adds a lot of additional behaviour. JEMM however is not a clean room implementation of a JVM, so the enhancements occasionally don't always handle edge cases well as the implementation is still in its alpha stages. The below is a list of the scenarios that have been tested to work correctly.
Constructors
- Entry and exit of constructors tracked and object state saved.
- Model classes extending from other Model classes, synchronisation and ID only assigned in the leaf class.
- Constructors creating other Model class constructors
TODO
- Constructor calling onto a method with object references.
- Passing this out of a constructor to another class
Methods
- Nested method calls within the same object
- Multiple threads entering and exiting an object.
Synchronisation
- Synchronized keyword on a method
- Synchronized block on this
- Synchronized block on another JEMMObject
Fields
- All the primitives
- Object references to other JEMMObjects
- Transient values are not stored
- public Objects are null
- private and protected fields
- static fields are ignored
TODO
- Object equivalents of Primitives - Integer, Float, Double, Boolean etc
- final field values are restored
- Field name clash with jemmOIF