Java User Forum - Stuttgart




Die Top 10 der Tools & Methoden
 für mehr Spaß beim Entwickeln


                 Patrick Baumgartner – Senior Software Consultant
07. Juli 2011       Odilo Oehmichen – Senior Software Consultant
Speaker Profiles
§  Patrick Baumgartner
    §  Senior Software Consultant | Partner
    §  Spring Framework, OSGi & agile Methoden
    §  Co-Autor von „OSGi für Praktiker“ (Hanser)

§  Odilo Oehmichen
    §  Senior Software Consultant | Partner
    §  mehr als 10 Jahre Erfahrung im Java-Umfeld
    §  Spring, Spring MVC, Webflow, Security, etc.

§  Swiftmind GmbH (http://www.swiftmind.com)
    §  Enterprise Java, Spring & OSGi Consulting
    §  Spring & OSGi Workshops/Trainings

                                                      2
Das kennen wir alle...

§  Jeder von uns...
     §  ... wird ständig in seinem Arbeitsfluss unterbrochen

     §  ... muss den Code seiner Kollegen weiterentwickeln

     §  ... hat immer wiederkehrende zeitraubende Tasks



§  raubt den Spaß am Entwickeln




                                                          3
Agenda

§  Unsere 10 Lieblingsmittelchen gegen

                  Procrastination

                  Code Smells

                  Repetitive Tasks

                  Deadly Dullness


§  Q&A / Welches sind Eure Lieblingstool?
                                             4
Your Daily Comic Strip
Geek and Poke




                6
Nasa - Earth Observatory




                Kali-Düngerwerk
                Lop Nur, Xinjiang, China
Rapid Application Development
Projekt Setup

§  Projekt Struktur schnell erzeugen

§  Persistenzlayer konfigurieren

§  Webtechnologie integrieren

§  Managen von Dependencies und Repositories

§  Scaffolding Applikationen bauen




                                                9
Spring Roo Demo




                  10
Clean Code
Clean Code

§  Software Craftmanship

§  geprägt von Uncle Bob (Robert C. Martin)

§  Code Smells
    §    Klassen-, Methoden-, Variablennamen
    §    Methodengrösse
    §    Comments
    §    Strong cohesion -> Single Responsibility
    §    …



                                                     12
Projekt Lombok

§  Java Library – lombok.jar

§  Reduce Boilerplate Code

§  Annotationsbasiert

     @Getter, @Setter, @ToString, @Data,...




                                              13
Projekt Lombok




                 14
Projekt Lombok

§  Benötigt Java ≥ 6

§  Java Agents hooken in Compile Prozess

     javac –cp lombok.jar Person.java

§  Eclipse, netbeans, maven Plugins



§  Andere Tools: PMD, findbugs, checkstyle, Simian



                                                  15
Redeploy Hell
Redeploy Hell
§  Problem
     §  Code geschrieben -> Build -> Deploy auf Server
     §  Über 15 % der Entwicklungszeit ist Warten auf
         Redeploy
     §  Frißt Nerven, Zeit und Geld
§  Lösungen
     §    Funktionalitäten ausgliedern
     §    Abhängigkeiten zu Laufzeit-Umgebungen reduzieren
     §    Unittests / Applikation
     §    Tools
            §  Debugger
            §  JRebel
                                                              17
JRebel
§  Integriert sich in JVM
§  Richtiges Hotdeployment
    §  Hinzufügen von Methoden
    §  Ändern von Methodensignaturen
    §  Konfigfile Änderung (Spring, Hibernate, JSF, Wicket,…)
§  Verbindet sich direkt mit IDE-Workspace
§  Unterstützt alle gängigen Appserver

§  Nachteil: Kommerziell



                                                           18
Open Source Libraries
Don't re-invent the wheel

§  Einsatz von Open Source Libraries im Projekt
     §    Bessere Applikations-Architektur
     §    Source Code von der Community benutzt
     §    gut (Unit-)getestet
     §    Schnelleres Entwickeln mit kleineren Team
     §    Fokussierung auf die Businesslogik
§  Libraries
     §    Apache Commons
     §    Guava
     §    FluentJava
     §    Spring

                                                       20
Apache Commons – Lang

§  Verschiedene String Operationen




§  Erwartete Resultate




                                      21
Apache Commons – CLI

§  Command Line Programm mit Option „-h“




§  Programmausgabe



                                            22
Apache Commons – Email

§  Beispiel Email senden über Gmail




                                       23
Apache Commons

Attributes, BeanUtils, Betwixt, Chain, CLI, Codec,
Collections, Compress, Configuration, Daemon,
DBCP, DbUtils, Digester, Discovery, EL, Email, Exec,
FileUpload, IO, JCI, Jelly, Jexl, JXPath, Lang,
Launcher, Logging, Math, Modeler, Net, Pool,
Primitives, Proxy, Sanselan, SCXML, Transaction,
Validator, VFS


                                                     24
Get your Work Done!
Pomodoro Technique
        !"#$%&'&(&)&$!#*"+,-.#$




                          (c) Staffan Nöteberg - Pomodoro Technique Illustrated
                                                                                 !"#$%&'()*+,&-)#+.)+&/01&2334536564&


                                                                                         26 !
"#$!%&'&(&)&!"$*#+,-.$!                                    !/!!!0001234554++&3$6$)712$!89:;<=!
Pomodoro Technique

§  Ergebnisse
     §  Lernen Aktivitäten planen & schätzen
     §  Aufzeichnen & verbessern der Aktivitäten
     §  Störungen vermindern & vermeiden

§  Tools
     §  Pomodoro (Eieruhr)
     §  Focus Buster




                                                    27
Shortcuts



            28
Shortcuts
§  Problem
     §    Mouse Junkies
     §    Umgreifen frisst Zeit
     §    Produktivität sinkt
     §    Shortcuts schwer lernbar




                                      29
Shortcuts
§  Lösungen
    §  Eclipse Mousefeed-Plugin zeigt Shortcuts auf




    §  Save-Actions räumt Code auf
    §  Cheatsheets (für jegliche Tools)
                                                       30
Continuous Integration
Continuous Integration
Phyllis




                         32
Jenkins
§    Alles was es braucht ist Java
§    Gehe zu http://jenkins-ci.org
§    Download War-File
§    Command-Line java -jar jenkins.war

§  Plugin-Mechanismus
        §  Chuck-Norris
        §  Lava Lampe
        §  ...



                                           33
Continuous Integration
Agnes




                         34
CI Game
§  „You broke the build“
     §  Einzahlung in Build-Kasse
     §  „<...> Developer of the week“
     §  ...


§  CI Game von Clint Shank
     §  Reward-System
     §  Jenkins-Plugin verfügbar




                                         35
Unit Testing
Unit Testing
§  TDGotchi
      §  Gotchi füttern mit Unittest-Results




§  Infinitest
      §  Continuous Test Runner for Java



                                                37
Keep up-to-date
Keep up-to-date
§  Es tut sich viel in der Java-Welt
     §  Java 7, Cloud Computing, OSGi, ....
§  Besuche...
     §  Konferenzen
     §  Hackathons / Hackergarten
     §  Java User Groups
§  Tausch dich aus
§  E-Learning
     §  Blogs
     §  Parleys (Offline-Client)
     §  InfoQ

                                               39
Zusammenfassung
Zusammenfassung
§    Your Daily Commic Strip
§    Rapid Application Development
§    Clean Code
§    Redeploy Hell
§    Open Source Libraries
§    Get your Work Done!
§    Shortcuts
§    Continuous Integration – Jenkins
§    Unit Testing
§    Keep up-to-date

                                         41
Weitere Resourcen
§  Swiftmind GmbH
      §  http://www.swiftmind.com
      §  http://www.swiftmind.com/blog

§  Memonic
      §  http://bit.ly/swiftmind-jfs




                                          42
Q&A




Patrick Baumgartner, Odilo Oehmichen
patrick.baumgartner [at] swiftmind [dot] com
odilo.oehmichen [at] swiftmind [dot] com
http://www.swiftmind.com http://www.twitter.com/swiftmind
                                                       43

JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen

  • 1.
    Java User Forum- Stuttgart Die Top 10 der Tools & Methoden für mehr Spaß beim Entwickeln Patrick Baumgartner – Senior Software Consultant 07. Juli 2011 Odilo Oehmichen – Senior Software Consultant
  • 2.
    Speaker Profiles §  PatrickBaumgartner §  Senior Software Consultant | Partner §  Spring Framework, OSGi & agile Methoden §  Co-Autor von „OSGi für Praktiker“ (Hanser) §  Odilo Oehmichen §  Senior Software Consultant | Partner §  mehr als 10 Jahre Erfahrung im Java-Umfeld §  Spring, Spring MVC, Webflow, Security, etc. §  Swiftmind GmbH (http://www.swiftmind.com) §  Enterprise Java, Spring & OSGi Consulting §  Spring & OSGi Workshops/Trainings 2
  • 3.
    Das kennen wiralle... §  Jeder von uns... §  ... wird ständig in seinem Arbeitsfluss unterbrochen §  ... muss den Code seiner Kollegen weiterentwickeln §  ... hat immer wiederkehrende zeitraubende Tasks §  raubt den Spaß am Entwickeln 3
  • 4.
    Agenda §  Unsere 10Lieblingsmittelchen gegen Procrastination Code Smells Repetitive Tasks Deadly Dullness §  Q&A / Welches sind Eure Lieblingstool? 4
  • 5.
  • 6.
  • 7.
    Nasa - EarthObservatory Kali-Düngerwerk Lop Nur, Xinjiang, China
  • 8.
  • 9.
    Projekt Setup §  ProjektStruktur schnell erzeugen §  Persistenzlayer konfigurieren §  Webtechnologie integrieren §  Managen von Dependencies und Repositories §  Scaffolding Applikationen bauen 9
  • 10.
  • 11.
  • 12.
    Clean Code §  SoftwareCraftmanship §  geprägt von Uncle Bob (Robert C. Martin) §  Code Smells §  Klassen-, Methoden-, Variablennamen §  Methodengrösse §  Comments §  Strong cohesion -> Single Responsibility §  … 12
  • 13.
    Projekt Lombok §  JavaLibrary – lombok.jar §  Reduce Boilerplate Code §  Annotationsbasiert @Getter, @Setter, @ToString, @Data,... 13
  • 14.
  • 15.
    Projekt Lombok §  BenötigtJava ≥ 6 §  Java Agents hooken in Compile Prozess javac –cp lombok.jar Person.java §  Eclipse, netbeans, maven Plugins §  Andere Tools: PMD, findbugs, checkstyle, Simian 15
  • 16.
  • 17.
    Redeploy Hell §  Problem §  Code geschrieben -> Build -> Deploy auf Server §  Über 15 % der Entwicklungszeit ist Warten auf Redeploy §  Frißt Nerven, Zeit und Geld §  Lösungen §  Funktionalitäten ausgliedern §  Abhängigkeiten zu Laufzeit-Umgebungen reduzieren §  Unittests / Applikation §  Tools §  Debugger §  JRebel 17
  • 18.
    JRebel §  Integriert sichin JVM §  Richtiges Hotdeployment §  Hinzufügen von Methoden §  Ändern von Methodensignaturen §  Konfigfile Änderung (Spring, Hibernate, JSF, Wicket,…) §  Verbindet sich direkt mit IDE-Workspace §  Unterstützt alle gängigen Appserver §  Nachteil: Kommerziell 18
  • 19.
  • 20.
    Don't re-invent thewheel §  Einsatz von Open Source Libraries im Projekt §  Bessere Applikations-Architektur §  Source Code von der Community benutzt §  gut (Unit-)getestet §  Schnelleres Entwickeln mit kleineren Team §  Fokussierung auf die Businesslogik §  Libraries §  Apache Commons §  Guava §  FluentJava §  Spring 20
  • 21.
    Apache Commons –Lang §  Verschiedene String Operationen §  Erwartete Resultate 21
  • 22.
    Apache Commons –CLI §  Command Line Programm mit Option „-h“ §  Programmausgabe 22
  • 23.
    Apache Commons –Email §  Beispiel Email senden über Gmail 23
  • 24.
    Apache Commons Attributes, BeanUtils,Betwixt, Chain, CLI, Codec, Collections, Compress, Configuration, Daemon, DBCP, DbUtils, Digester, Discovery, EL, Email, Exec, FileUpload, IO, JCI, Jelly, Jexl, JXPath, Lang, Launcher, Logging, Math, Modeler, Net, Pool, Primitives, Proxy, Sanselan, SCXML, Transaction, Validator, VFS 24
  • 25.
  • 26.
    Pomodoro Technique !"#$%&'&(&)&$!#*"+,-.#$ (c) Staffan Nöteberg - Pomodoro Technique Illustrated !"#$%&'()*+,&-)#+.)+&/01&2334536564& 26 ! "#$!%&'&(&)&!"$*#+,-.$! !/!!!0001234554++&3$6$)712$!89:;<=!
  • 27.
    Pomodoro Technique §  Ergebnisse §  Lernen Aktivitäten planen & schätzen §  Aufzeichnen & verbessern der Aktivitäten §  Störungen vermindern & vermeiden §  Tools §  Pomodoro (Eieruhr) §  Focus Buster 27
  • 28.
  • 29.
    Shortcuts §  Problem §  Mouse Junkies §  Umgreifen frisst Zeit §  Produktivität sinkt §  Shortcuts schwer lernbar 29
  • 30.
    Shortcuts §  Lösungen §  Eclipse Mousefeed-Plugin zeigt Shortcuts auf §  Save-Actions räumt Code auf §  Cheatsheets (für jegliche Tools) 30
  • 31.
  • 32.
  • 33.
    Jenkins §  Alles was es braucht ist Java §  Gehe zu http://jenkins-ci.org §  Download War-File §  Command-Line java -jar jenkins.war §  Plugin-Mechanismus §  Chuck-Norris §  Lava Lampe §  ... 33
  • 34.
  • 35.
    CI Game §  „Youbroke the build“ §  Einzahlung in Build-Kasse §  „<...> Developer of the week“ §  ... §  CI Game von Clint Shank §  Reward-System §  Jenkins-Plugin verfügbar 35
  • 36.
  • 37.
    Unit Testing §  TDGotchi §  Gotchi füttern mit Unittest-Results §  Infinitest §  Continuous Test Runner for Java 37
  • 38.
  • 39.
    Keep up-to-date §  Estut sich viel in der Java-Welt §  Java 7, Cloud Computing, OSGi, .... §  Besuche... §  Konferenzen §  Hackathons / Hackergarten §  Java User Groups §  Tausch dich aus §  E-Learning §  Blogs §  Parleys (Offline-Client) §  InfoQ 39
  • 40.
  • 41.
    Zusammenfassung §  Your Daily Commic Strip §  Rapid Application Development §  Clean Code §  Redeploy Hell §  Open Source Libraries §  Get your Work Done! §  Shortcuts §  Continuous Integration – Jenkins §  Unit Testing §  Keep up-to-date 41
  • 42.
    Weitere Resourcen §  SwiftmindGmbH §  http://www.swiftmind.com §  http://www.swiftmind.com/blog §  Memonic §  http://bit.ly/swiftmind-jfs 42
  • 43.
    Q&A Patrick Baumgartner, OdiloOehmichen patrick.baumgartner [at] swiftmind [dot] com odilo.oehmichen [at] swiftmind [dot] com http://www.swiftmind.com http://www.twitter.com/swiftmind 43