Being the oldest and most used JVM web framework, means that Spring MVC has a massive community of followers who are very helpful and have provided numerous tutorials and answers on SO.
Spring even holds an annual conference called SpringOne. The Spring forums and SO are great places to ask and get help about anything Spring related. The website blog and newsletter keep developers informed on every news related with the framework.
It is based and is dependent on the Spring Framework, therefore it benefits from tools like for example Roo and Spring Tool Suite and many more tools included in the Spring Framework. All Maven dependencies are available in a public Maven repository.
There are also 3rd-party solutions for Spring, such as MyEclipse which includes scaffolding capability for Spring MVC.
Applications are meant to scale as the framework is used in large-scale applications worldwide. Components like EhCache are used to scale memory cache and it also contains components used for parallel processing.
Batch enables processing of large volumes of records and job processing statistics.
The official documentation covers virtually everything. The official website also has a series of great tutorials in video and text formats. There are links to Github repositories for Spring sample applications and there are also a lot of third-party tutorials out there for the fact that Spring MVC is so widely used by many experienced developers.
Spring MVC architecture although simple has a lot of layers and abstractions which can be hard to debug if problems arise. It is also highly dependant on the Spring core.
It's an old and mature framework that has numerous amount of ways to extend and configure it – and this actually makes it fairly complex.
If you are looking to build a quick prototype fast and easy, Spring isn't going to help much. It's very large and quite hard to grasp if you are just beginning with it.
Updating your project is manageable if you’re already familiar with the framework and the project itself, but if you’re just diving in it can be a little overwhelming and hard.
While actually very good and with a very complete and rich feature set to develop and maintain code on the server side, it still doesn't provide any rich framework for building good user interfaces.
While actually very good and with a very complete and rich feature set to develop and maintain code on the server side, it still doesn't provide any rich framework for building good user interfaces.
With some basic starting tutorials and a fleshed out documentation, there will be no need to go asking others for help, there should be enough for a developer to find a solution.
Everything with Play has been built with asynchronous requests in mind. This will result in the application not blocking results while waiting on other operations. With this implemented your application can be developed with multiple threads in mind without worrying about hanging on one request before it completes another.
All error checking and testing done in the browser only needs a page refresh to show the latest updates. This is huge, allowing the ability to code in real-time and make quick edits. Without it the develop would need to reboot/recompile the entire application to test with new data.
Applications that have been written in Play 1 will not be supported in Play 2 as the core of the framework was rewritten in Scala. This includes plugins that were working in Play 1 as well.
As Play continues to develop and mature it seems as if it is becoming less of a Java framework as the core has been rebuilt in Scala. This may deter adopters.
You never restart while you're working on your Act application. Act's hot reload feature is fast and stable, it makes you feel like dealing with scripting language frameworks like Django or NodeJs. Watch this video and feel it.
There are two aspect of performance: how quick a developer can deliver a feature and how fast the app is running on the product server. Act is designed to delivery excellent result in both aspects. With unbeatable developing experience Act makes it very easy to release a feature; on the other side Act is very fast in runtime. Check out this 3rd party benchmark result.
Act's view architecture is very flexible and support using multiple view engines in your app. The default template engine is Rythm, a very developer friendly and powerful template engine. Act also support other templating solutions including freemarker, velocity, thymeleaf, and mustache via plugins.
Act's DB layer is extremely easy to use. It supports SQL databases (through ebean orm) and MongoDB (through morphia). Using multiple datasource can never be that easy with Act's DB layer. Go here for more information on this.
Act makes creating RESTful service a kids game. It features AdaptiveRecord (allows front end to drive the data structure), JSON response control (just declare the fields you want to present or hide) and RESTful URL routing with path variables.
ActFramework is not a servlet framework and there are no requirements on containers/app servers. It has a small package size (a helloworld distribution package size is less than 20 MB), a small memory feet print (a helloworld app heap usage is less than 20MB) and a fast boot up speed (a helloworld app starts in less than 3s).
Act is built as a secure product. It provides built-in CSRF/XSS prevention mechanism. And act-aaa makes it very easy to implement Authentication/Authorization/Auditing in your app.
Act supports load configuration from a common dir and then overwriting it from a profile dir. Makes it very easy to manage configurations in different environment (e.g., dev, uat, sit, prod) Watch this video to see the innovative way Act delivers its configuration support.
Act does not require you to put Annotation when it is able to infer the intention from other parts of the code, i.e., you don't use @PathVariable or @RequestParam to tell Act the binding parameter name. And you don't need a ModelMap to bind variables to render argument names. Act has sophisticated byte class scanner to detect the variable names to do bindings automatically.
Act's IoC is built on top of Genie, a fast dependency injection library that fully supports JSR330, and Act's validation solution is built on top of JSR303. Act is NOT an odd framework to most Java developers. Unlike Play1.x, ACT applications follow the standard maven project structure and it is very easy to integrate other Java libraries.
You can configure your routing in either Spring MVC/Jersey style with annotation or Play style with route table or a combination of both. Act's routing supports RESTful URL path variables, optionally validated with regular expressions.
Extremely easy to get projects up and running and to learn the framework. Transitioning from being a learner to having something that is secure and production ready is seamless.
Although Act is built to be a great framework that supports microservice development, it lacks some of the key features at the moment, like sending requests to other microservices from within the app, service governance, and messaging handling.
Vaadin has a 'design mode' which allows developers to drag and drop components into a canvas and then provide the logic for every component. There are also a lot of third party tutorials and guides which help with the initial learning curve.
The book of Vaadin is a must have for every developer that uses Vaadin to make web apps. It is an excellent reference manual and all around a great tool for every Vaadin related need. You can find and download the pdf online or get it for free in almost any Vaadin sponsored conference.
The online documentation is also very good. It has some tutorials and video guides.
There is also a vibrant community which sorround Vaadin, for any problem you may have there is a big chance that someone has already asked and answered that question on StackOverflow or in the Vaadin forums. If not, it will probably be answered quickly if you ask it.
Vaadin has what is called the Vaadin Directory which is a repository of downloadable Vaadin components which can be easily used for development. To use something from the repository, you need to download the JAR file and add it to the project.
Vaadin has a 'design mode' which allows developers to drag and drop components into a canvas and then provide the logic for every component. There are also a lot of third party tutorials and guides which help with the initial learning curve.
Most tools Vaadin provides are so called PRO tools that can only be used by companies which can afford to purchase them. They are also closed source even though Vaadin claims it is a "open-source" company.
Usually you have a separate front-end project with client Javascript dependencies and another project for your Java dependencies. Vaadin mixes these two into its Maven plugin in a strange (non-functioning) way.
Since Vaadin stores the UI state and logic in the server, this means that for every user interaction a request needs to be sent to the server and the client needs to wait so it can know how to react. This leads to higher traffic and load times.
Grails seamlessly integrates with GORM, a data access toolkit that provides a rich set of APIs for accessing relational and non-relational data. GORM also includes implementations for Hibernate (SQL), MongoDB, Cassandra, and Neo4j.
With the use of application profiles, including React and Angular, Grails allows developers to build REST APIs or modern web applications with a JavaScript frontend.
The async features of Grails aim to simplify concurrent programming. Grails' features include the concept of Promises, a unified event model, and the use of RxJava to write reactive logic.
Apache Groovy is a language for the Java platform designed to enhance developers' productivity. It is an optionally-typed and dynamic language but with static-typing and static compilation capabilities.