I've seen lots of great articles explaining [JUnit](http://tutorials.jenkov.com/java-unit-testing/simple-test.html) and articles explaining [Annotations](http://tutorials.jenkov.com/java/annotations.html) but nothing quite explaining how the two actually tie together.

I know that the annotation `@test` is places in front of a method that you want to be used a JUnit test, but can someone please explain what's going on in the background?

How are annotations converted into useful Java code? Where does it happen? How can I make something like this myself?