Was ist die Spring IO Plattform?

Nach langer Vorankündigung wurde vor einigen Tagen die neue Spring IO Plattform in der Version 1.0.0 veröffentlicht. Stellt sich nun die Frage, was hinter diesem neuen Begriff aus dem mittlerweile sehr groß gewordenen Spring Universum steckt. Die Projekt-Seite beschreibt die Spring IO Plattform wie folgt:

Spring IO brings together the core Spring APIs into a cohesive and versioned foundational platform for modern applications.

Dies beschreibt die Spring IO Plattform auch sehr gut. Es handelt sich um die Zusammenstellung von mehreren Projekten in einer ganz bestimmten Version mit dem Versprechen, dass diese Versionen zusammen verwendet werden können. Nicht mehr, aber auch nicht weniger. Die Version 1.0.0 der Plattform bringt beispielsweise das Spring Core-Framework in der Version 4.0.5, Spring Security 3.2.4, Spring Data 1.1.0 und durch die transitiven Abhängigkeiten auch zahlreiche Drittbibliotheken wie beispielsweise Hibernate in der Version 4.3.1 mit sich.

Die technische Brille

Aus der rein technischen Brille besteht die Spring IO Plattform letztlich aus einer einzigen Datei, in der Bibliotheken in einer kompatiblen Version aufgeführt sind. Diese Datei kann im Git-Repository von Spring IO bei GitHub eingesehen werden. Diese Abhängigkeiten können über einen Maven- oder Gradle-Build in die eigene Anwendung integriert werden. Hier am Beispiel von Maven:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

	<modelVersion>4.0.0</modelVersion>

	<groupId>de.oio</groupId>
	<artifactId>your-application</artifactId>
	<version>1.0.0-SNAPSHOT</version>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>io.spring.platform</groupId>
				<artifactId>platform-bom</artifactId>
				<version>1.0.0.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
</project>

Nachdem die Plattform auf diese Art in das Dependency-Management von Maven eingebunden wurde, können Abhängigkeiten zu Bibliotheken, die in der Plattform enthalten sind, ohne die Abgabe einer sonst notwendigen Versionsnummer erfolgen. Hier am Beispiel von spring-core:

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
    <dependency>
</dependencies>

Die Enterprise-Brille

Aus der technischen Sicht ist das Gezeigte sicherlich kein allzu großer Wurf, wenngleich es den Entwickler-Alltag im Umgang mit Spring-Projekten deutlich erleichtern kann. Bisher habe ich mir beim Aufsetzen eines neuen Projektes meist eine Maven POM mithilfe von Spring Roo generieren lassen, da ich mir dann sicher sein konnte, dass die eingesetzten Versionen auch tatsächlich zusammen funktionieren. Dieser Umweg über Spring Roo ist nun nicht mehr notwendig. Stattdessen kann direkt die Spring IO Plattform eingebunden werden.

Die Spring IO Plattform ist aus der Enterprise-Sicht nichtsdestotrotz ein wichtiger Schritt in die richtige Richtung. In der standardisierten Welt der Java Plattform, Enterprise Edition (Java EE) gab es eine vergleichbare Zusammenstellung von kompatiblen Version schon von Beginn an. So vereint Java EE 7 beispielsweise EJB 3.2, JSF 2.2, CDI 1.1 und viele weitere unter einer gemeinsamen Plattform-Version. Dies befreit die Entwickler von aufwendigen Versionskompatibilitätsprüfungen und bietet damit einen echten Mehrwert. Genau diesen Mehrwert gibt es nun auch in der Spring Welt.

Short URL for this post: https://wp.me/p4nxik-28R
This entry was posted in Build, config and deploy, Spring Universe and tagged , , , , , , . Bookmark the permalink.

Leave a Reply