Wednesday, February 6, 2013

Selecting the JVM framework

For various reason all the time we are confused to choose the perfect framework for various reason. Some times for benefits of application development and most of the time for the purpose of career. Recently from a web search, I havea pdf consisting some information regarding this issue. Here is the snapshot of that note.

Some factors for choosing frame work:
  • Request, Component or RIA Framework
  • Ease of Development
  • Project Community
  • Project Future and Roadmap
  • Maintenance
  • Technical Features
Types of application we need to develop:
  • High-traffic, internet facing, infinite scalability
  • Intranet-based, behind the firewall, few users
  • Products, to be maintained for 5-10 years
  • Legacy Backend
  • Others?
Actually the framework should be choose depending on the requirements in project:



»Request Based Frameworks -----------Struts 2, Spring MVC, Rails, Stripes

»Component Based Frameworks.-----------JSF, Tapestry, GWT

»Rich Internet Applications -------------Flex

»One Size Fits All -------------Grails

Generically we may map framework depending on project as:

»High-traffic, internet facing, infinite scalability:
       -------- Request-based frameworks
»Intranet-based, behind the firewall, few users:
       --------Component-based frameworks
»Products, to be maintained for 5-10 years:
       --------Largest Community, Most Vendor Support
»Legacy Backend:
       --------- Same Language as backend

At this time many points should be checked before choosing framework:
1. Developer Productivity
2. Developer Perception
3. Learning Curve
4. Project Health
5. Developer Availability
6. Job Trends

7. Templating
8. Components
9. Ajax
10.Plugins or Add-Ons
11. Scalability
12.Testing Support

13.i18n and l10n
14.Validation
15. Multi-language Support (Groovy / Scala)
16.Quality of Documentation/Tutorials
17.Books Published
18.REST Support (client and server)
19.Mobile / iPhone Support
20.Degree of Risk

The following matrix shows the ratings:


Matrix Result:


  • Spring MVC (17)
  • GWT (17)
  • Ruby on Rails (17)
  • Grails (16.5)
  • Wicket (14.5)
  • Struts 2 (14.5)
--------------------------
Spring MVC
-------------------------
Pros
  • – Easy Configuration with Annotations and Conventions
  • – Integrates with many view options seamlessly: JSP/JSTL, Tiles, FreeMarker, Excel, PDF, JSON
  • Excellent REST Support
Cons
  • – Instant reload not built-in, need JRebel or Spring Roo
  • – No open development process, need to be SpringSource
  • – Ajax requires 3rd-party library (can be a good thing!)

--------------------------
GWT
--------------------------
Pros
  • Write Java => Produces Optimized JavaScript
  • Easy to learn and develop with standard Java Tools
  • Vibrant Community
Cons
  • You have to know Java
  • Slow to compile, difficult to test
  • More like a JSP Tag Library than a web framework

-----------------------
Ruby On Rails
----------------------
Pros
  • Easy to learn and understand for Web Developers
  • Lots and lots of documentation
  • Passionate Community
Cons
  • Slightly less performant by default
  • Dynamic language means more tests
  • Development Tools and Debugging

---------------------
Grails
--------------------
Pros
  • Easy dynamic language transition for Java Developers
  • Groovy
  • Plugins for all types of applications
Cons
  • Groovy learning targets Java Developers
  • Stack traces are horrendous
  • Knowledge of underlying frameworks not required, but helpful
---------------------
Wicket
---------------------
Pros
  • Great for Java Developers
  • Tight binding between pages and views
  • Active community - support from creators
Cons
  • No Jobs or Developers
  • Stateful by default
  • HTML Templates live next to Java code by default





No comments: