Is it an event-driven runtime/platform? Nodejs, for example, has been designed from the ground up to be evented. Meaning that all libraries and code written to run on it are already aware of the event loop. If the platform was not designed to be evented (like Ruby with EventMachine) m...

Great article! And apparently you are not alone thinking about this in a non-Java world. In Scala people talk about those things too and the solution is pretty similar (use traits and “include” them inside classes that need that dependency). It seems simpler, like you said, because yo...

Related:

In the application code, you can also centralize and isolate code which decides what saw implementation to use. In other words, you now may be able to give the responsibility to do wiring to someone else (and only to him), so that objects can focus on their actual responsibilities (ag...