> Almost all the Java web frameworks are giant balls of reflection. Name a function the right way or add the right magic annotation and the framework will autowire it correctly.
I find this to be very powerful, and also very unintuitive/undiscoverable at the same time.
Reflection is simply a syntax vinegar for duck typing.
Initially, but it very quickly becomes discoverable once you are familiar with how things are working.
Most frameworks in Java are very similar. The ones that aren't are effectively doing what "expressjs" does in terms of setup, which is still pretty discoverable.
Most java frameworks rely on annotations rather than naming schemes which makes everything a lot easier to grok.