Objectives: The purpose of this page is to centralize information related to the technology roadmap which should be adopted into the OpenNCP project. Historically, most of the technical minimal requirements have been defined during the epSOS project few years ago and they could be obsolete and deprecated nowadays in a technological point of view but in order to provide a sustainable answer to our requirements. The community has to validate the use of scalable products or solution with a long term support without consideration about using the "most up-to-date framework".
Development Framework:
Core library: The epSOS project has built the OpenNCP architecture with the Spring Framework 2.5 which is a product mature product implementing some standards and also well known into the development teams, a lot of documentation, tutorials and sample are also available on-line. Question for the Technical Committee is to validate if the Spring version should be updated to the version 3.X or 4.X (4.3.3 which is the current one)?
ORM library: Most of the OpenNCP has been built and designed with the Hibernate framework, this technical choice is a sustainable toolkit, so the idea of this topic is more related to a harmonization of the Hibernate version and trying to deploy the up-to-date version (5.2.2-Final) which also supports Java 8. Other framework could also be studied if needed.
UI/Web library: OpenNCP component doesn't really provide interface user, the components are more system to system oriented, the community clearly need a popular framework well know into the developer's community. The needs are using a framework which is compliant with the others layers of the architecture and well integrated also.
Spring MVC
Thymeleaf
Vaadin
Wicket (used for epSOSWeb component)
AngularJS
Struts
JSF
Web Service implementation: Linked to the JDK version update topic, the Web service framework validated during epSOS was Axis2. As some implementation should be made in order to update the JDK, the Web Services framework discussion could be also opened, the scope of the product is quite reduced to the most efficient frameworks:
Logging: The logging mechanism into the different components have to be harmonized and some rules have to be decided related to the usage of logging (what, when, which level etc.). The current implementation is mixing different implementations: commons-logging, slf4j, Log4j etc. The commons-logging algorithm use a binding during runtime and it could be responsible of performance issue. The proposition is using SLF4J as an abstract layer logging with the Logback implementation, some extra information are available here and provide the benefits of Logback use. The logging strategy is really important because it could easily create performance issue.
Java Virtual Machine: OpenNCP is currently using and tested with the Java SE 1.7_80, but since April 2015, Oracle will no longer post updates of Java SE 1.7 to its public download sites and they encourage developers and end-users to update to more recent versions. Java SE 8 is the latest available version and the proposition is to migrate to the version JDK-8-102 which is the latest update in July 2016. According Oracle's release roadmap, Java SE 9 would be available end of Marsh 2017.