Java Magazin Editorial
Das aktuelle Java Magazin diskutiert im Editorial unsere Maintenance Policy – leider ohne die Fakten korrekt darzustellen.
Hier noch mal der aktuelle Stand der Maintenance Policy für die Spring-Projekte:
- Aller Source Code steht selbstverständlich im Open Source Code Repository zur Verfügung. Das gilt ohne irgendwelche Ausnahmen.
- Für das jeweils aktuelle stabile Major Release (z.B. 2.5 oder später 3.0) gibt es ein kompiliertes Binary, das jeder kostenlos herunterladen kann.
- Für zahlende Kunden wird jede Version drei Jahre lang unterstützt. Dadurch kann auch ein langfristiger Einsatz professionell abgesichert werden.
Bedauerlicherweise wird dieser aktuelle Stand im Editorial kaum besprochen. Es ist nur die Rede davon, dass die Policy geändert wurde – aber was genau gändert wurde wird nicht dargestellt.
Aber selbst nach der alten, mittlerweile nicht mehr gültigen Version der Maintenance Policy wurden der Community nie – wie im Editorial behauptet – Bug Fixes vorenthalten. Die kostenlose Verteilung des Source Codes aller Bug Fixes stand nie in Frage.
Desweiteren wird in dem Editorial von dem Einsatz von Spring abgeraten, wenn es Restriktionen unterliegt. Nach dem aktuellen Stand der Maintenance Policy ist diese Aussage nicht nachvollziehbar. Zumal unklar bleibt, welche Restriktionen überhaupt gemeint sein könnten.
Außerdem wird im Editorial festgestellt, dass Spring nur zukunftsfähig ist, wenn es keine Diskussion gibt, wie und ob es mit Spring weitergeht. Die Zukunft von Spring stand aber nie in Frage. Es gibt auch schon lange ein Commitment von unserem CEO Rod Johnson, dass Spring seine Lizenz nie ändern wird.
Leider scheint das Editorial also auf einer Serie von Missverständnissen und nicht völlig durchdachten Ideen zu basieren. Dank der aktiven Spring-Community bekommen wir aber zum Glück viel ehrliches, wohl durchdachtes und hilfreiches Feedback. Das hat uns auch bei der Maintenance Policy geholfen, eine sinnvolle Lösung zu finden. Dafür möchte ich mich zu guter letzt persönlich wie auch im Namen von SpringSource bei Ihnen bedanken!
Links:
SpringSource Blog zur geänderten Maintenance PolicySpringSource Blog zur Lizenz von Spring
SpringSource kauft G2One, die Firma hinter Groovy und Grails
Heute hat SpringSource bekannt gegeben, dass sie G2One gekauft hat. G2One ist die Firma hinter Groovy und Grails. Diese Akquisition ist aus unterschiedlichen Gründen sehr sinnvoll:
- Grails basiert auf Spring-Technologien.
- Groovy und Grails machen Entwickler produktiver - wie dies auch Spring, AspectJ usw. tun.
- Während Spring und AspectJ aber eine statisch getypte Sprache nämlich Java nutzen, ist Groovy dynamisch und ergänzt so unser Portfolio.
Ingesamt bin ich sehr erfreut über diese Entscheidung. Diese Technologien ergänzen unsere sehr gut. Einige der G2One-Mitarbeiter kenne ich auch schon etwas länger und bin sehr von ihnen angetan. So haben Guillaume LaForge und ich auf der letzten JAX gemeinsam in einem Panel gesessen - und fast dasselbe gesagt.
Außerdem werden wir sicher viele Synergien mit anderen Projekten wie Tomcat oder dm Server realisieren können.
Weitere Informationen finden sich unter:
http://www.springsource.com/g2oneFAQ:
http://www.springsource.com/files/G2OnePublicFAQ.pdfPresse-Mitteilung:
http://www.springsource.com/node/836Rod Johnsons Blog:
http://blog.springsource.com/2008/11/11/more-weapons-for-the-war-on-complexity-springsource-acquires-groovygrails-leader/
With or without SpringSource dm Server
Der SpringSource dm Server ist eine sehr interessante Plattform, um Anwendungen mit Spring zu deployen. Allerdings wollen noch nicht alle Organisationen den Schritt wagen, mit diesem Server gleich in Produktion zu gehen. Dieses Posting zeigt, wie man eine Spring-Konfiguration erstellen kann, die auch ohne dm Server funktioniert.
Wir bauen einen Shop zur Auslieferung individuell gebauter Mountain Bikes. Nehmen wir an, wir haben eine Komponente für die Konfiguration von Mountain Bikes in einem File
configuration.jar. Dort findet sich in
/META-INF/spring/beans.xml folgendes:
<beans ...>
<bean id="configurationFacade"
class="configurator.ConfiguratorFacadeImpl">…
</bean>
</beans>
Diese Spring-Bean
configurationFacade soll als OSGi-Service exportiert werden. Daher findet sich in
/META-INF/spring/osgi.xml
in
configuration.jar folgendes:
<beans ...>
<osgi:service ref="configurationFacade"
interface="configurator.ConfiguratorFacade" />
</beans>
In dem Order-Bundle soll dieser Service verwendet werden. Also findet sich in
/META-INF/spring/beans.xml innerhalb von
order.jar dann eine Referenz auf diesen OSGi-Service:
<beans ...>
<osgi:reference id="configurationFacade"
interface="configurator.ConfiguratorFacade" />
</beans>
und diese Spring-Bean wird dann anderswo im
order.jar in
/META-INF/spring/beans.xml verwendet:
<beans ...>
<bean>
<property name="configurationFacade" ref="configurationFacade"/>
</bean>
</beans>
Soweit also die Konfiguration für den dm Server. Ohne den dm Server funktioniert das ganze aber auch - man muss lediglich
classpath*:/META_INF/spring/beans.xml für die Erzegung des ApplicationContext benutzen. Dadurch werden alle Dateien
/META-INF/spring/beans.xml aus allen Jar-Files für die Bildung des ApplicationContext genutzt. Die Referenz auf
configurationFacade in
/META-INF/spring/beans.xml innerhalb von
order.jar wird also direkt auf die Spring Bean
configurationFacade aus
/META-INF/spring/beans.xml von
configuration.jar gelenkt.
Die Facade wird also direkt benutzt und nicht als OSGi-Service. Der Inhalt der
osgi.xml-Dateien wird ignoriert. Nun kann man sicher sagen, dass hier die Wahl der Namen geschickt ist, so dass es zufällig funktioniert. Man kann aber mit
<alias> einer Bean zusätzliche Namen geben, um solche Probleme zu vermeiden. Ganz verschont bleibt man von Namensproblemen aber nicht: Es kann immer noch sein, dass ein Name doppelt verwendet wird. Hier bietet es sich an, mit Prefixen zu arbeiten. So könnte man alle Beans aus
order.jar ein
order- Präfix geben.
So oder so: Man kann Spring-Anwendungen für dm Server bauen, dort testen und damit entwickeln. Sollte man dann im Betrieb eine andere Plattform benötigen - trotz der Vorteile die dm Server gerade in diesem Bereich hat - kann man hier flexibel sein. Allerdings verliert man dadurch auch die Modularisierung durch OSGi. So kann man weder die Sichtbarkeit der Typen genau regeln noch kann man Bundles zur Laufzeit austauschen.
Labels: dm Server, Spring