Geekstammtisch

Geekstammtisch

Das heimelige Nerdgespräch über Webentwicklung, Ruby/Rails und mehr

GST029 - Die JVM ist ein Erfolgsmodell

Audio herunterladen: MP3 | AAC | OGG | OPUS

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