Frameworks review - SSD2015/TeamGG GitHub Wiki
- Assignment: Google Docs (requires KU email)
The competitors
We have chosen the following frameworks for comparison:
- Spark Framework
- Play Framework
- Google Web Toolkit (GWT)
Spark seems to be very minimal and should be easy to learn. However, its suitability for larger project should be explored.
Play, on the other hands seems to be comparable to modern web frameworks in other languages with WebSockets, form and template engine it should be perfectly suitable for the job but its learning curve should be judged.
GWT advertises itself as a web application builder and use a novel way of handling user interaction similar to ASP.net. This should be useful when the developer doesn't have much JavaScript experience but our main task is to create a RESTful API for the mobile application to consume, its suitability is left to be decided.
The scoring is:
- Ease of learning - How easy it could be learned
- Cohesion - Do the components works well with each other? A good way to look at this is how the template system interact with the rest of the framework.
- Bells and whistles - Do they have any prebuilt component that could be useful?
- Suitability - Is it suitable for the job?
- Project health - When is the last release and commit?
- Security - How they handle security cases. Responsible disclosure policy? How many CVE are discovered last year and how they're handled?
- Documentation - When working with that framework, does the documentation and StackOverflow has the answers you needed to finish your work?
- Modules - Do they have a module repository or a list of it?
- Concise - In your application, do you have to write a lot of codes?
One way we use to review is to create addition calculator. It doesn't review much of the framework but it is small enough to finished in a short time.
Spark Framework
This section is written by @winvaris
Spark is one of the simplest framework to learn to use. It gives us just enough function of which we can use it to create a calculator from it. Though it may be quite difficult for me, but I think for most of the people who have experienced some of the other frameworks before should be able to learn how to use this framework easily.
It does not really follow the model-view-controller pattern used in other framework since Spark intended to allow the user to create quick web-application in Java with minimal effort.
Ease | Cohesion | B&W | Suitability | Health |
---|---|---|---|---|
8 | 5 | 3 | 9 | 5 |
Security | Docs | Modules | Concise | Overall |
---|
? | 9 | 5 | 9 | 7
Verdict: This framework provides minimal set of function and should be able to be studied quickly.
Play Framework
This section is written by @tandooky
Play Framework is very suitable for learning new framework. It provides tutorial which can explain clearly what it can help when creating applications.
Installing Play Framework seems to be hard if not using Homebrew to download Play Framework and TypeSafe Activator. Creating new project can be done by a command line tool which creates an application boilerplate.
The application is configured to display HTML but you have to manually set the route of every methods that could be called. It also provides a database driver.
The documentation of Play Framework is quite comprehensive and covers many features of it.
Ease | Cohesion | B&W | Suitability | Health |
---|---|---|---|---|
8 | 8 | 7 | 8 | 10 |
Security | Docs | Modules | Concise | Overall |
---|
10 | 7 | 6 | 6 | 7
Verdict: This framework should to be used in our project. It provides functions relevant to our task and is easy to use.
Google Web Toolkit
This section is written by @awkwin
GWT seems not to be a full stack web framework. Its main task is to aid development of client side application and it doesn't do much on the server side. The documentation even recommends that Javabean is used on the server side.
The documentation for GWT seems to be lacking. Its website doesn't contain every information I need. I need to dive into the Javadocs which seems to be well written. StackOverflow has everything else I need.
On the plus side client side development with GWT is extremely easy. I haven't write a single line of HTML (the Eclipse plugin can generate boilerplate page automatically) and the application is run on the client side completely resulting in fast, responsive application.
For the purpose of creating this review, I have chosen Jersey to be the server side component with RestyGWT to connect GWT with Jersey. Configuring Jersey to work is quite hard and StackOverflow doesn't have answers to my question. It took me over 4 hours to find a single XML tag that solved my problem and it is not present in the example code. RestyGWT on the other hands seems simple to use with some rough edges.
Installing my apps on App Engine is really simple. One click "deploy to app engine" and it works. I only need to fix the project to be compatible and compiled with Java 7.
Ease | Cohesion | B&W | Suitability | Health |
---|---|---|---|---|
7 | 0 | 5 | 4 | 10 |
Security | Docs | Modules | Concise | Overall |
---|---|---|---|---|
10 | 4 | 8 | 7 | 5 |
Verdict: Could be good for writing backoffice, but the API should be done with other framework.
Summary
Name | Ease | Cohesion | B&W | Suitability | Health |
---|---|---|---|---|---|
Spark | 8 | 5 | 3 | 9 | 5 |
Play | 8 | 8 | 7 | 8 | 10 |
GWT | 7 | 0 | 5 | 4 | 10 |
Name | Security | Docs | Modules | Concise | Overall |
---|---|---|---|---|---|
Spark | ? | 9 | 5 | 9 | 7 |
Play | 10 | 7 | 6 | 6 | 7 |
GWT | 10 | 4 | 8 | 7 | 5 |
(Which framework do you recommend using? Play, I believe.)