Why use a framework
While working with the C2 architecture I realized the real purpose of using a framework. By definition, a framework is "a structure for supporting or enclosing something else". That is, a structure that allows us to do things such as using messages as communication between components (as in C2) or implementing implicit invocation (as in MachII) when the underlying language does not provide native facilities for that.
It is not only to be able to rapidly develop an application. Rather, it is to be able to use an architectural style to inherit all its advantages: modularity, anticipation of change, abstraction, low coupling, and high cohesion (all the properties that styles aim at). That, in turn, allows us to develop more quickly because the style put us constraints and we have some predefined configurations of component arrangement. We also achieve faster development by means of using proven patterns and reusing components. We could achieve the same results by applying other styles (as long as the language allows us) and skipping the framework.
So why use a framework? Because I am lazy and I don't want to have to think so much about how to realize a style or pattern. And by using a framework correctly, I get a free ride to a well organized application and I can focus on other things.
the main idea on frameworks is, that there is an almost ready to go application, which you can use and expand for your own demands. frameworks work in the way: "don't call us, we call you", means, you develop extensions and additional functionality, which will be used by the framework.
Sometimes, that is not really, what you want. Then you would make use of "libraries". Because libraries represent something like the opposite. You write the main application and the library extends your main application. So now it's your application, which "calls" the extensions.
So it depends on how you want to build up your app. So your right, frameworks can really rock :o)
But you are right, sometimes you kind of fill in the blanks of the framework and the framework itself calls your listeners, sets up the flow, establishes who communicates with who, etc. I would say that that is part of the job of any framework.
SOFIA, for jsp development (sorry, i have no link, but look for it in sourceforge.net)
and typo3 (www.typo3.com) a php content management framework.
And of course, it's always usefull to make yourself a framework :) (now,everytime i have to do something in flash, it takes me 6 hours less than when i use to make everything from scratch, now it's copy paste the core classes and voila, a lot of functionality for you to keep developing)