Like any function that becomes obsolete, they do not serve the needs well, have been poorly designed and now have better solutions.
These types were too general, did not carry important information about the event, and were not so secure from the point of view of typing.
People complained that they were not able to handle competition and serialize the object.
Official position:
They do not provide a rich enough event model for applications. For example, they support the notion that something has changed, but they do not convey any information about what has changed. There are also some thread-safety and sequencing issues that can not be fixed compatibly.
Font .
The whole pattern was misunderstood . That's why you should be careful with design patterns .
One of the alternatives is PropertyChangeListener
that is usually more specific, simpler and is what you want.
If you need something more powerful you can use the class Flow
. documentation indicates this.