GST029 - Die JVM ist ein Erfolgsmodell
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/
Kommentare
Neuer Kommentar