OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
The C programming language
Eiffel: the language
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
DOOD '95 Proceedings of the Fourth International Conference on Deductive and Object-Oriented Databases
Copying and Comparing: Problems and Solutions
ECOOP '00 Proceedings of the 14th European Conference on Object-Oriented Programming
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Automated auditing of design principle adherence
ACM-SE 42 Proceedings of the 42nd annual Southeast regional conference
ACM SIGPLAN Notices
The DaCapo benchmarks: java benchmarking development and analysis
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Effective Java (2nd Edition) (The Java Series)
Effective Java (2nd Edition) (The Java Series)
Programming in Scala: A Comprehensive Step-by-step Guide
Programming in Scala: A Comprehensive Step-by-step Guide
Equality and hashing for (almost) free: Generating implementations from abstraction functions
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Optimizing marshalling by run-time program generation
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
Declarative object identity using relation types
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Hi-index | 0.00 |
Manually implementing equals (for object comparisons) and hashCode (for object hashing) methods in large software projects is tedious and error-prone. This is due to many special cases, such as field shadowing, comparison between different types, or cyclic object graphs. Here, we present JEqualityGen, a source code generator that automatically derives implementations of these methods. JEqualityGen proceeds in two states: it first uses source code reflection in MetaAspectJ to generate aspects that contain the method implementations, before it uses weaving on the bytecode level to insert these into the target application. JEqualityGen generates not only correct, but efficient source code that on a typical large-scale Java application exhibits a performance improvement of more than two orders of magnitude in the equality operations generated, compared to an existing system based on runtime reflection. JEqualityGen achieves this by generating runtime profiling code that collects data. This enables it to generate optimised method implementations in a second round.