I have created AnnotationScript, a programming language whose syntax is expressed entirely in Java annotations. Yes, you read that right: Java annotations.
The pandemic lockdowns of 2020 did strange things to people. Some people started learning the guitar. Others decided to get in shape. But not me. I decided to take Java annotations to their logical extreme.
I think annotations are over-used in the Java ecosystem: you can use them for dependency injection, handling HTTP requests, and interacting with databases. You can even use them to generate code in various ways. But for some reason, nobody has actually used them to implement a full-blown, Turing-complete programming language. Until now.
Do you want to know about the weird restrictions that Java annotations have? Do you want to know how you can still abuse them to do something weird like this? Also, do you want to know how easy it is to actually implement LISP? And do you want to know how easy it is to recursively implement LISP in the LISP you just implemented?
You will be amazed. Weirded-out and amazed.
Jan Ouwens
Jan is a senior developer, trainer and speaker at Yoink in the Netherlands; he is interested in back-end systems, functional programming and languages. He has worked in various fields, such as banking, retail, law enforcement, transportation and electron microscopy, but he is perhaps best known for being the author of EqualsVerifier, a tool that rigourously tests Java's equals and hashCode methods in a single line.