I have long been surprised by the fact that it is so difficult to raise events in Java. Adding listeners is easy, but as soon as you want your own event system, you’re out of luck. Through browsing the web I discovered that a commonly used “solution” is to piggy-back on existing Swing and AWT event queues. This isn’t good.
In order to fix this problem, I have started a small project called Javent. The Javent library is tiny (less than 20KiB), and makes event-raising code a lot cleaner. All of you Java developers should give it a try.