# A Comparative Assessment of JVM Frameworks to Develop Microservices
## 3 Materials and Methods
### Frameworks under Test  
The choice of the frameworks being tested was not left to chance. Based on the selection criteria described below, frameworks applicable to the Java ecosystem have been selected for the comparison. The first obvious criterion was the possibility of microservices with REST API creation using the Java programming language, which can be called the most popular in the JVM environment. The second criterion is the result of the yearly growing popularity of open-source software. This type of software is an element of almost every project or product. As a result of that trend, only open-source-based frameworks were considered. The third one taken into consideration was the popularity of the given solution. It is an essential factor that benefits any project/product with the given framework as a microservice foundation. It directly impacts the size of the related community but also the quality of community support which is an indispensable help in terms of development, maintenance, and security fixes for the foundation of our project/product. As a measure of popularity, several factors were taken into account. Factor number one was the number of \"stars\" received by the project on the GitHub platform. This value directly relates to the project's popularity and can be seen as its denominator [31; 32]. We can even see its usage in some research [33]. In the case of the project consisting of multiple repositories, the one with the most stars were considered. Factor number two was the popularity of the framework within the developer's community based on the survey's results carried out by two recognizable IT companies--Snyk.io and JetBrains [34; 35; 36; 37]. The mentioned surveys carried out by these two companies were conducted on a significant number of respondents, which allows us to consider these surveys as showing trends within the Java ecosystem. Regarding Snyk.io, the 2020 and 2021 surveys were conducted on approximately 2000 Java developers. In the JetBrains reports, the number of respondents varied more significantly depending on the year the study was conducted. In 2020, it was around 20,000 respondents, and in 2021, around 31,000 respondents. The last is the possibility of robust support for using the alternative executable form to traditional JAR file-GraalVM native images [38]. This criterion was dictated by the declared benefits of the application in an alternative form, such as a significantly shorter start-up time and smaller size of the packed application, which in the world of microservices can have a very positive impact on the auto-scaling mechanism. Based on that criterion, the aspect of the impact of executable form was taken into consideration when executing tests and presenting results. Applying the adopted criteria presented above, the first sure choice for the analysis was Spring Boot. Over 50% of the respondents in each survey declared they used it. It can also be named the most popular based on the GitHub stars criterion. It provides GraalVM support as well. When considering other frameworks to compare, such as Dropwizard, Struts, Vaadin, MicroProfile, Micronaut and Quarkus, only two offered robust support for GraalVM in combination with a similar application creation approach to the Spring Boot. Moreover, those two frameworks can be described as having a position as the direct rivals for Spring and having significant interest and community usage. Based on that, the following frameworks were chosen for comparison:  
* Spring Boot ([[https://spring.io/projects/spring-boot](https://spring.io/projects/spring-boot)]([https://spring.io/projects/spring-boot](https://spring.io/projects/spring-boot)), accessed on 30 December 2022),
* Micronaut ([[https://micronaut.io/](https://micronaut.io/)]([https://micronaut.io/](https://micronaut.io/)), accessed on 30 December 2022),
* Quarkus ([[https://quarkus.io/](https://quarkus.io/)]([https://quarkus.io/](https://quarkus.io/)), accessed on 30 December 2022). All three frameworks support the reactive programming model.