To start the research of frameworks, we need to understand what is a framework and why it is created. Here we only focus on Java frameworks.
One of the most significant characters of Frameworks that differ from other regular libraries is called "Reversion of Control". When we write a java program, there is always a entry point - "public static void main(String args)". It calls different parts of our projects and start the program's functionality. For some kinds of applications, a lot of code is just written again and again, but in a messy way. Framework defines the common transactions, so client applications just fill in their own part.
The reason framework are useful is because it standardize the coding in some commonly use scenarios such as GUI and WEB applications. If we use a simple analogy by saying a Java application is a car. Framework would be the framework of the car such as the frame, 4 wheels, etc. A library would be a bag of small parts. You can make change small part of a car, but you can not redefine a framework once you choose the 4 wheel frame.
Other than those great convenience frameworks provide, there are a lot of issues of using those frameworks.
First of all, there is a serious problem of learning. From the observations of countless tutorials of various kinds of frameworks, we can easily conclude that learning is not a trivial task. Actually, the better is a framework, the more difficult it may be.
Secondly, when we use a framework, there are a lot of issues involved, debugging, testing, proper usage, etc.
Researchers have identified some remarkable issues from frameworks and publish a great deal of research work.
To understand what is a framework, here is my previous post about framework.
<pre><code> String foo = "bar"; </code></pre>