SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Ähnlich wie JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen

Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
s0enke
 
Entwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HHEntwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HH
Florian Holzhauer
 
EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloaded
René Winkelmeyer
 
Rails und Scrum in großen Projekten
Rails und Scrum in großen ProjektenRails und Scrum in großen Projekten
Rails und Scrum in großen Projekten
Phillip Oertel
 
Drei Dinge, die mich kürzlich inspiriert haben
Drei Dinge, die mich kürzlich inspiriert habenDrei Dinge, die mich kürzlich inspiriert haben
Drei Dinge, die mich kürzlich inspiriert haben
Christian Trabold
 
Qualitätssicherung in Webprojekten
Qualitätssicherung in WebprojektenQualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
Sebastian Springer
 

Ähnlich wie JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen (20)

BED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerBED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als Entwickler
 
Codeception VisualCeption
Codeception VisualCeptionCodeception VisualCeption
Codeception VisualCeption
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
 
Day CQ 5.3 WCM - Was ist neu
Day CQ 5.3 WCM - Was ist neuDay CQ 5.3 WCM - Was ist neu
Day CQ 5.3 WCM - Was ist neu
 
Entwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HHEntwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HH
 
Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!
 
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
 
Der Status Quo des Chaos Engineerings
Der Status Quo des Chaos EngineeringsDer Status Quo des Chaos Engineerings
Der Status Quo des Chaos Engineerings
 
EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloaded
 
JAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascript
 
Supersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: QuarkusSupersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: Quarkus
 
Rails und Scrum in großen Projekten
Rails und Scrum in großen ProjektenRails und Scrum in großen Projekten
Rails und Scrum in großen Projekten
 
Drei Dinge, die mich kürzlich inspiriert haben
Drei Dinge, die mich kürzlich inspiriert habenDrei Dinge, die mich kürzlich inspiriert haben
Drei Dinge, die mich kürzlich inspiriert haben
 
2008 02 01 Zeller
2008 02 01 Zeller2008 02 01 Zeller
2008 02 01 Zeller
 
iOS Testautomation bei mobile.de
iOS Testautomation bei mobile.deiOS Testautomation bei mobile.de
iOS Testautomation bei mobile.de
 
Chaos Kata Fitnesstraining für DevOps Teams
Chaos Kata Fitnesstraining für DevOps TeamsChaos Kata Fitnesstraining für DevOps Teams
Chaos Kata Fitnesstraining für DevOps Teams
 
XPages: Performance-Optimierung - Ulrich Krause (eknori) SNoUG 2013
XPages: Performance-Optimierung  - Ulrich Krause (eknori) SNoUG 2013XPages: Performance-Optimierung  - Ulrich Krause (eknori) SNoUG 2013
XPages: Performance-Optimierung - Ulrich Krause (eknori) SNoUG 2013
 
30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen...
30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen...30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen...
30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen...
 
Continuous Integration mit Hudson
Continuous Integration mit HudsonContinuous Integration mit Hudson
Continuous Integration mit Hudson
 
Qualitätssicherung in Webprojekten
Qualitätssicherung in WebprojektenQualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
 

Mehr von Patrick Baumgartner

No Sql in Enterprise Java Applications
No Sql in Enterprise Java ApplicationsNo Sql in Enterprise Java Applications
No Sql in Enterprise Java Applications
Patrick Baumgartner
 
Daten natuerlich modellieren und verarbeiten mit Neo4j
Daten natuerlich modellieren und verarbeiten mit Neo4jDaten natuerlich modellieren und verarbeiten mit Neo4j
Daten natuerlich modellieren und verarbeiten mit Neo4j
Patrick Baumgartner
 
OSGi für Praktiker - Web Applikationen und verteilte Systeme mit OSGi
OSGi für Praktiker - Web Applikationen und verteilte Systeme mit OSGiOSGi für Praktiker - Web Applikationen und verteilte Systeme mit OSGi
OSGi für Praktiker - Web Applikationen und verteilte Systeme mit OSGi
Patrick Baumgartner
 

Mehr von Patrick Baumgartner (9)

Customer is king
Customer is kingCustomer is king
Customer is king
 
Neo4j Introduction (for Techies)
Neo4j Introduction (for Techies)Neo4j Introduction (for Techies)
Neo4j Introduction (for Techies)
 
No Sql in Enterprise Java Applications
No Sql in Enterprise Java ApplicationsNo Sql in Enterprise Java Applications
No Sql in Enterprise Java Applications
 
Daten natuerlich modellieren und verarbeiten mit Neo4j
Daten natuerlich modellieren und verarbeiten mit Neo4jDaten natuerlich modellieren und verarbeiten mit Neo4j
Daten natuerlich modellieren und verarbeiten mit Neo4j
 
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Basel
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow BaselHow to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Basel
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Basel
 
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow ZurichHow to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich
 
OSGi für Praktiker - Web Applikationen und verteilte Systeme mit OSGi
OSGi für Praktiker - Web Applikationen und verteilte Systeme mit OSGiOSGi für Praktiker - Web Applikationen und verteilte Systeme mit OSGi
OSGi für Praktiker - Web Applikationen und verteilte Systeme mit OSGi
 
OSGi with the Spring Framework
OSGi with the Spring FrameworkOSGi with the Spring Framework
OSGi with the Spring Framework
 
Whats New In Spring 3.0 ?
Whats New In Spring 3.0 ?Whats New In Spring 3.0 ?
Whats New In Spring 3.0 ?
 

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 §  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
  • 3. 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
  • 4. Agenda §  Unsere 10 Lieblingsmittelchen gegen Procrastination Code Smells Repetitive Tasks Deadly Dullness §  Q&A / Welches sind Eure Lieblingstool? 4
  • 7. Nasa - Earth Observatory Kali-Düngerwerk Lop Nur, Xinjiang, China
  • 9. Projekt Setup §  Projekt Struktur schnell erzeugen §  Persistenzlayer konfigurieren §  Webtechnologie integrieren §  Managen von Dependencies und Repositories §  Scaffolding Applikationen bauen 9
  • 12. 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
  • 13. Projekt Lombok §  Java Library – lombok.jar §  Reduce Boilerplate Code §  Annotationsbasiert @Getter, @Setter, @ToString, @Data,... 13
  • 15. 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
  • 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 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
  • 20. 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
  • 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. Get your Work Done!
  • 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. Shortcuts 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
  • 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
  • 35. 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
  • 37. Unit Testing §  TDGotchi §  Gotchi füttern mit Unittest-Results §  Infinitest §  Continuous Test Runner for Java 37
  • 39. 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
  • 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 §  Swiftmind GmbH §  http://www.swiftmind.com §  http://www.swiftmind.com/blog §  Memonic §  http://bit.ly/swiftmind-jfs 42
  • 43. 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