Matthias ist Softwareentwickler und erzählt uns wie er jahrelang
Java im Telko-Sektor gemacht hat. Vor einem Jahr hat er dann die Branche und
die auch die Größe des Unternehmens radikal geändert und macht nun
Produktentwicklung in der Logistikbranche. Neben Java wird dort viel im
Embedded-Bereich entwickelt und trotz eines kleinen Teams sind die Aufgaben
sehr vielfältig. Seit neuestem wird Software nun auch mit JRuby und AngularJS
umgesetzt. Wir erfahren über die damit verbundenen Herausforderungen und wie
damit umgegangen wurde.

Wir sprachen mit Matthias Richter über die Freuden der Java-Entwicklung
Einleitung & GST-Meta (00:00:00)

Matthias Richter (@mr_samma) ist heute unser Gast
GST019 mit Stefan Schiffer "Weg von .NET & Windows": http://geekstammtisch.de/#GST019
Der Geekstammtisch und die Nerdkunde beim Rudelpodcasten: http://das-sendezentrum.de/blog/podcasts-aus-unserer-30c3-assembly
Das neue Büro des Home Office Cologne in der Lindenstraße 14: https://twitter.com/HomeOfficeCGN/status/425630254364119040

Unser Gast (00:02:45)

Matthias hat mit Dirk & Basti studiert
…und hat nach dem Studium als Java Entwickler bei einer Softwarefirma im "Telekommunikationsumfeld" gearbeitet
Matthias hat dort nie Admins zu Gesicht bekommen :)
Nach vier Jahren hat Matthias dann etwas neues gesucht und ist in der Logistikbranche gelandet
Kleineres Unternehmen, eigene Produkte, jeder macht alles (Matthias ist also "auch" Admin)
wollte weiter auf der JVM entwickeln
Scala: http://www.scala-lang.org/
Clojure Koans: http://clojurekoans.com/
Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages (von Bruce A. Tate): http://pragprog.com/book/btlang/seven-languages-in-seven-weeks

Java-Entwicklung (00:12:30)

Dirk hat das letzte mal ernsthaft Java 2005 gemacht (mit Apache Struts, http://struts.apache.org/); "Das war schlimm!" – Dirk
Basti hat es nie ernsthaft gemacht (abgesehen vom Studium)
"Java, das Ökosystem"
Die JVM ist ein Erfolgsmodell
K virtual machine (KVM): http://en.wikipedia.org/wiki/Kvirtualmachine
Java Platform, Micro Edition, J2ME: http://en.wikipedia.org/wiki/JavaPlatform,Micro_Edition
Java EE Application Server: http://en.wikipedia.org/wiki/Comparisonofapplication_servers
Java ME / SE / EE: http://docs.oracle.com/javaee/6/firstcup/doc/gkhoy.html
Java Community Process: https://www.jcp.org/en/home/index
Servlet API ist Teil der Java EE
Spring Framework: http://spring.io/
Zwischen Anhängern von Spring und Java EE hat sich ein flame war entwickelt:
Blog Beitrag eines bekannten JEE Evangelist inkl. Antworten von Spring Mitarbeitern in den Kommentaren: https://blogs.oracle.com/arungupta/entry/whyjavaee6is
Antwort eines VMWare Mitarbeiters: http://www.iamjambay.com/2012/03/arun-gupta-java-ee-6-and-spring.html
tl;dr: hier eine Zusammenfassung auf deutsch: http://jaxenter.de/news/JavaEE-versus-Spring-Hitzige-Debatte-um-Arun-Guptas-Legacy-Vorwurf
Matthias würde immer Spring wählen, da es dynamischer ist und aktueller
Spring legt wesentlich mehr Wert auf Testing
Java 8 SE Release März 2014, EE dann wesentlich später, irgendwann noch später lassen sich Application Server zertifizieren
Vielzahl an Java Frameworks für jeden Zweck
Web Frameworks, die "Großen" http://zeroturnaround.com/rebellabs/the-curious-coders-java-web-frameworks-comparison-spring-mvc-grails-vaadin-gwt-wicket-play-struts-and-jsf/
Liste von sonstigen Web Frameworks: http://java-source.net/open-source/web-frameworks
Liste von Persistenz Frameworks: http://java-source.net/open-source/persistence
Frameworks zur asynchronen Verarbeitung:
http://spring.io/blog/2013/05/13/reactor-a-foundation-for-asynchronous-applications-on-the-jvm
http://akka.io/
http://vertx.io/
Web Service Frameworks, Xfire, Apache CXF
DAO / ActiveRecord als Beispiel dafür, dass in Rails Dinge falsch angegangen werden
dies kann aber für einfache Anwendungsfälle in Ordnung sein, findet Matthias, Dirk sieht das aber anders
DAOs sind lange Standard in Java Apps gewesen
mittlerweile werden häufig Repositories eingesetzt: http://thinkinginobjects.com/2012/08/26/dont-use-dao-use-repository/
Repository Ansatz in Java EE 6 / 7
Misko Hevery zu AR: http://misko.hevery.com/2009/05/05/the-problem-with-active-record/
Spring Roo nutzt ActiveRecord Pattern in Java Apps: http://docs.spring.io/spring-roo/reference/html/architecture.html#architecture-dao
AR in Rails tief verwurzelt, ermöglicht aber die Geschwindigkeit in der Rails Entwicklung
Matthias findet opinionated Ansatz in Rails gut
Matthias macht mittlerweile Projekte mit JRuby on Rails, AngularJS und Elasticsearch
Elasticsearch basiert auf Lucene, in Java geschrieben

Deployment & JVM (01:20:00)

JRuby ist ein guter Einstieg in Ruby-Entwicklung gewesen, da man "nur" ein WAR (https://en.wikipedia.org/wiki/WAR(fileformat)) erstellen muss und es im bisherigen Application-Server deployed
Java Wissen auf der Betriebsseite kann im Grunde 1:1 weiter verwendet werden
Auch Deploymentstruktur über Jenkins konnte weiter verwendet werden
Deployment via JMX (https://en.wikipedia.org/wiki/JavaManagementExtensions)
Das WAR wird per Warbler erstellt (http://caldersphere.rubyforge.org/warbler/)
Switch von Java auf JRuby ist schneller gemacht als die Umstellung von JBoss auf nginx+passenger (o.ä.)
Maven ist auch im Projekt o/

Entwicklungsumgebung (01:23:05)

Matthias hat jahrelang Eclipse verwendet, dann zu IntelliJ gegangen
Mit Ruby dann zu RubyMine gegangen (bzw. IntelliJ mit Ruby-Plugin)
Sublime Text auch mal ausprobiert, geweint
Vim ausprobiert, noch mehr geweint
AngularJS auch in RubyMine, Alternativ auch WebStorm vielleicht eine Möglichkeit
Lokale Entwicklung ist schneller geworden, da kein Kompilieren und Deployment mehr
Lokal wird die Anwendung mit Puma/JRuby entwickelt sowie Grunt für JavaScript
Keine weiteren Java-Abhängigkeiten (außer dem Datenbanktreiber)
Basti möchte wissen wie der Umstieg von IDE in die Welt des Terminals war
Matthias ist aber leider ein schlechtes Beispiel ;-) Er hat Eclipse eigentlich immer "nur" als Editor verwendet
Matthias würde sich gerne auch Vim mal ansehen, aber scheut derzeit die Lernkurve
Frage: Warum Vim? Antwort: Kosten. Aber wir stellen in Frage, ob die Kosten wirklich ein Grund ist. Wahrscheinlich nicht :-)
Insgesamt ist Matthias noch in der Findungsphase: RubyMine ist aber ein Favorit
Matthias hat Spaß auf neue Tools umzustellen :-)

Next Steps (01:30:47)

Derzeit macht er AngularJS Entwicklung, Testing mit Karma, Jasmine, PhantomJS
Es wird auch für Mobile-Plattformen mit AngularJS und Cordova (https://cordova.apache.org/) entwickelt
Die Software die derzeit entwickelt wird, ist sehr allgemein einsetzbar
Im Grunde geht darum Firmen zu unterstützen ihren Kram zusammenzuhalten
Zusätzlich gibt es Systeme die auf Gabelstapler montiert werden
Der Branchenwechseln war eine gute Idee

Fazit (01:33:10)

Bewertung des Wechsels: Positiv, nicht nur wegen dem Spaß sich in neue Dinge einzuarbeiten
Frontend-Entwicklung mit AngularJS fühlt sich tatsächlich mal an wie Entwicklung ;-)
Gab es auch Probleme bei der Umstellung?
Einige Mitarbeiter wollen sich nicht mit so vielen Technologien befassen, das kann auch OK sein, aber man muss damit als Unternehmen/Team umgehen
Ein Kollege ist auch gegangen, da er mehr .NET machen wollte
Lernkurven müssen an die Geschäftsführung und die anderen Kollegen kommuniziert werden
Viele Parallenen zu GST019 (http://geekstammtisch.de/#GST019)
Die Umstellung ist unter anderem auch dadurch motiviert worden, weil der Chef die Folge gehört hat :-)
Frage dann vom Chef: Was ist eigentlich dieses Ruby und Rails? Und wenn das so gut ist, warum machen das nicht alle?
Entwicklungsgeschwindigkeit hat mit überzeugt

Ausklang (01:38:35)

Wir sind uns einig, dass die Folge Leute nicht davon abhalten wird weiter Java zu bashen. Dafür ist es auch einfach zu lustig.
Kritiker werden sagen: "Matthias hat ja dann doch von Java auf Ruby gewechselt"
Matthias hat sich eigentlich auf Java 8 gefreut
Das Unternehmen wird nie ganz auf (J)Ruby umstellen, dafür gibt es zu viele Bereiche in denen man Software entwickelt. Gleichzeitig macht das den Reiz aus
JRuby hat zwar kein Komitee aber dennoch genug Entwicklungsresourcen :-)
Problem ist aber, dass die Community recht klein ist und man schwieriger Lösungen für seine Probleme findet:
Erste Einschränkung: JRuby
Zweiter Einschränkung: JBoss Deployment
Matthias empfiehlt: Wenn man kein Java-Know-How hat, einfach MRI verwenden
Wir fordern Matthias zu Usergroups zu kommen und ihr Wissen zu teilen
Vor allem JRuby Wissen in die Welt zu tragen lohnt sich
NoSQL-Matters als Konferenz Empfehlung (http://2014.nosql-matters.org/cgn/)
Wenn man ernsthaft JRuby macht, kann man auch mal mit dem Core-Team Kontakt aufnehmen, die freuen sich über derartiges Feedback

Hiring-Pitch (01:44:06)

Wir fragen explizit nach ob noch Entwickler gesucht werden
Antwort: Ja
Firma sitzt in St. Augustin, direkt neben der FH
FrOSCon quasi einen Steinwurf entfernt ;-)
Aufgaben sind sehr vielfältig (Mobile-Entwicklung, Emedded-Entwicklung, Hardware-Entwicklung, Web-Entwicklung, Infrastruktur, etc.)
Die Branche nennt sich: Intra-Logistik
Die Firma heißt IdentPro: http://www.identpro.de/de/, aber bitte nicht von der Webseite abschrecken lassen, die ist old-school-Industrie-kompatibel o/

Twitter Mentions