The Web is part of the face of enterprise development. One of the main reasons for Java EE's prominence as one of the most popular platforms for enterprise application development can be duly attributed to its usage in creating the web part. Through the years, web development received a lot of attention, resulting in a surge of innovation from a variety of sources. It's quite intriguing to see that the ascription of innovation applied with each new framework and libraries in the development process kept the ground soppy for another. For example, when Servlet was making its mark, JSP came in to supersede while JSF was not weaned till then. The line never ended from third party innovators as, well, look at struts 2, Spring Web MVC, Grails... many more. They have changed a lot since their inception. There would be tons of write up needed to do justice to a topic such as, "...closer look." Take this article as a hint to some nooks and corners of web development from the perspective of framework usages.
Variety Is the Spice of Life...
Is it? Take a look at the framework rush. Let's indent it within the domain of a specific framework genre. However, this list is a tip of the iceberg, literally; there's a lot more :)
Full Stack Frameworks
Pure JVM Web Frameworks
- Apache: Wicket, Struts, Sling, Tapestry, Click
- GWT: SmartGWT, GXT, Vaadin, Errai
- JSF: Mojarra (RI), MyFaces, IceFaces, RichFaces, PrimeFaces
- Spring MVC, Stripes, RIFE, ZK
The Web is strewn with articles, documentation about many of the list items given above. Each of them has extensive usages and strong reasons to exist. The list can be overwhelming, and practically, it is. But once one is familiar with what one needs, culling a few of them is not that difficult. We shall, however, deal with the problem of choice down the line. Stay tuned for next set of articles that will take up a single framework and delve further into the details.
The Problem Is Choice
The solution to the problem of choice is not driven by the variety of frameworks we have at our disposal but by the thorough idea of the framework that suits our needs.
Frameworks are not an absolute truth of software development; rather, they're a tool to leverage productivity. They basically provide a set of implementation norms. If these norms are followed correctly, it ensures that the application is developed in compliance of the business rules. A framework helps in keeping the codes structured. And Structured codes are relatively easy to maintain and upgrade (unstructured codes are one of the biggest concern of software engineering). A framework often consists of template engines that lay down standard procedures, leading to a prospective end. This is the specific reason why developers' productivity is leveraged. It is as if there is only one path to the solution. Flexibility and deviation are controlled to avoid erroneous consequence. the judicious use of boiler-plate modules or reuse of in-built components saves time and energy to focus on the business problem rather than beating around the bush with configuration, setup, and other repetitive tasks.
The Darker Side
The disadvantage is that frameworks, when blindly applied, almost put blinkers (in the sense that when you have a hammer as the only tool, all problem looks like a nail) and reduce the choice of unconventional or deviated solution to a problem. Sacrificing flexibility in favor of productivity may be good for some situation such as building a standard application. But, in cases that demand high innovation, using a framework is an absolutely bad choice (unless the framework is flexible enough or have room for renovation). For example, take the case of Hibernate; it is undoubtedly an excellent ORM tool. But, when you need a highly optimized table with a very compact database, a very superficial use of the tool will not be very helpful. Fortunately, such cases are a few. Most commercial applications built are e-commerce, transaction processing, and the like. It is undeniable that, while creating such an enterprise application, a framework can save the day.
Frameworks for web development are designed by the people who thought to ease the developers task by giving themselves a track to follow because most of the time while creating web part these tracks are nothing but standard procedures of dynamic paging, database connection, UI component rendering, and so forth.
Which framework should one choose and when? I think, until now you have guessed it. Each framework is good at something and not so good at another. So, the decisive factor of choosing a framework depends on the need of the project at hand. the wisdom needed is to extrapolate from the claims and weigh its usage, obviously, keeping the feet on the ground. For example, when JSF suffices, Spring MVC would make things more complicated.
The Blue Pill or the Red Pill?
These is no providence, rather a pointer to think or a checklist on how to choose:
- Do I really need a framework?
- What do I expect the framework should have to fulfill my need?
- Get the documentation for the framework.
- Have I understood the framework as I understand my need?
- Pick a few relevant ones.
- Observe their market and maturity, because the rule of thumb is that the frameworks mostly used are more reliable, though they may not be the best.
- Standard projects are well suited for standard frameworks; they can be chosen almost blindly.
Thus, the problem of choice is reciprocated as the question of comprehension.
Let's make it simple.
Do I understand what I choose and have a choice to choose what I understand?
If the answer is 'YES,' you found the right framework you need. :)
Web development is a quite complicated process and involves a different type of technology such as HTML, XML, Scripting, Java, and the like due to the multifarious functionality it performs. Also, this functionality must be equally appealing with an aesthetic UI. Developers have to keep the bargain on both sides. To make this desktop like web application behavior, a huge amount of code unnecessary for the business logic, but are written for visual appeal. Frameworks systematize the code and application development process to ease the life of the developer.