The goal of this work is to demonstrate the power and potential of the Java EE platform and Spring Framework by designing and implementing a complex web application.
Java has always been a popular platform mainly because of its strong object-oriented approach, flexibility, and the support of the major industry-leading companies. Its popularity has recently been largely influenced by the spread of the Android mobile operating system and the introduction of the Java 8 which brought many great features.
The Spring Framework offers a comprehensive solution for creating Java EE applications. The inventors’ main goal was to enhance the productivity of the developers using the Java platform. The frameworks popularity is steadily growing since its appearance mainly because of the strong cohesion with the Open-Closed Principle which allows to flexibly extend the core modules.
The main task was to design and implement a web application which allows the users to manage their movie data sheets and which is complex enough to demonstrate the capabilities of the Spring Framework. Therefore the implemented application allows the users to create their account and create, modify and publish their movie and personal data sheets. By publishing a data sheet it becomes visible even for the non-registered users.
The application is built on a layered architecture using Spring MVC. Data binding and automated validation by Spring Validation plugin is used in the controllers. The security is granted by Spring Security using database-driven authentication and role-based authorization. In business layer Spring Transaction controls the automatic transaction management and Spring Cache drives the cache management. Data access is powered by Spring Data JPA by using repositories and Spring ORM. The power of the Aspect-Oriented Programming is demonstrated by using Spring AOP.
Other Java-based tools besides Spring were also used, like Java Reflection API, JAXB, Hibernate, Ehcache, Apache Velocity, Java Mail API, Logback and Liquibase. Productivity, project management and other software engineering tools like Git, Redmine, Maven and SonarQube have also played a vital role in the development process
Not only the design and development, but also the operation and maintenance has been accomplished. The application is run on OpenShifts PaaS solution, and is continuously monitored by New Relic and Uptime Robot tools, while its performance is checked daily using automated load tests provided by Loader.io.