DWX 2013 Nuremberg

123
Tips, Tricks & Tools every Eclipse User should know

description

Eclipse Tips, Tricks and Tools. Tools every developer should know.

Transcript of DWX 2013 Nuremberg

Page 1: DWX 2013 Nuremberg

Tips,  Tricks  &  Toolsevery  Eclipse  User  should  know

Page 2: DWX 2013 Nuremberg

• Project  Lead  of  Eclipse  Code  Recommenders• Eclipse  Commi7er  since  2010• Plug-­‐in  Developer  for  10  years  (Eclipse  2.1)• Eclipse  4  and  OSGI  Trainer• Co-­‐Lead  of  Java  User  Group  Darmstadt• Speaker  at  JUGs,  EclipseCon,  JavaOne...• PhD  in  Computer  Science• CEO  of  Codetrails

• Passion  to  improve  developers  day-­‐to-­‐day  work  with  intelligent  and  prac8cal  tools  -­‐  mostly  using  Data  Mining  on  Big  (So?ware  Engineering)  Data.

                     @MarcelBruch                        +MarcelBruch

About  me

Page 3: DWX 2013 Nuremberg

supported  by

About  us

The  Knowledge  Transfer  Company

Page 4: DWX 2013 Nuremberg

Disclaimer  ;-­‐)

Not  all  tools  I’m  talking  about  today  are  free  or  open  source.

I  assume  all  a7endees  are  familiar  with  (i)  refactorings  in  Eclipse,  (ii)  generaXng  ge7ers/se7er,  hashCode,  equals++  with  Eclipse,  and  (iii)  you  daily  use  keyboard  shortcuts.

No  refactorings  and  (almost)  no  shortcuts  today!

Page 5: DWX 2013 Nuremberg

If  you  don’t  know  your  keyboard  shortcuts...

Page 6: DWX 2013 Nuremberg

No  Mouse!  #dcr13

Page 7: DWX 2013 Nuremberg

⌘3

Page 8: DWX 2013 Nuremberg

Quick  Access  –  ⌘3  

Page 9: DWX 2013 Nuremberg

WHAT’S  NEW  IN  ECLIPSE  KEPLER?

Page 10: DWX 2013 Nuremberg
Page 11: DWX 2013 Nuremberg

Eclipse  Kepler  by  Numbers

(c)  Holger  Voormann  <[email protected]>

Page 12: DWX 2013 Nuremberg

New  and  Noteworthy

• Pla[orm  performance  improvements

• Pla[orm  builds  with  Eclipse  CBI

• IniXal  GTK+  3  support

• Eclipse  Orion  3.0

• Eclipse  Jubula  support  for  tesXng  mobile  devices

• Install  remedia.on

• EGit  3.0

• Mylyn  Reviews

• JDT  (usability)  improvements

Page 13: DWX 2013 Nuremberg

REMEDIATION  SUPPORT  IN  ECLIPSE

Page 14: DWX 2013 Nuremberg

Installing  new  features  can  be  painful...

Page 15: DWX 2013 Nuremberg

Not  (that  much)  with  Eclipse’s  new  Install  RemediaJon  Feature!

Page 16: DWX 2013 Nuremberg

UPDATING  FROM  ECLIPSE  3.X  -­‐-­‐>  4.XOMG,  I  don’t  want  to  reinstall  all  my  plugins  again...

Page 17: DWX 2013 Nuremberg

Install  soQware  items  from  exisJng  installaJon...

Page 18: DWX 2013 Nuremberg

Select  which  features  to  import...

Page 19: DWX 2013 Nuremberg

Want  to  prepare  a  company  wide  install  file?

Page 20: DWX 2013 Nuremberg

Export  soQware  items  w/  update  sites

Page 21: DWX 2013 Nuremberg

EGIT/JGIT  3.0  

Page 22: DWX 2013 Nuremberg

Git  in  Eclipse  -­‐  EGit  3.0

Page 23: DWX 2013 Nuremberg

Rename  DetecJon

Page 24: DWX 2013 Nuremberg

Reset  Repository  to  Expression

Page 25: DWX 2013 Nuremberg

Clean  Repository

Page 26: DWX 2013 Nuremberg

Commit  and  Push  (at  once)

Page 27: DWX 2013 Nuremberg

GERRIT  &  MYLYN  REVIEWS

Four  eyes  can  see  more  than  two...

Page 28: DWX 2013 Nuremberg

Gerrit  at  Eclipse

Page 29: DWX 2013 Nuremberg
Page 30: DWX 2013 Nuremberg

Reviewing  Changes  with  Gerrit

Page 31: DWX 2013 Nuremberg

Gerrit  Workflow

Gerrit Hudson

Git

3.  Build2.  Pull

4.  Verified

6.  Push

7.  Pull

1.  Push

5.  Approve

Page 32: DWX 2013 Nuremberg

HOW  IS  MYLYN  REVIEWS  GOING  TO  CHANGE  THIS?

Page 33: DWX 2013 Nuremberg

1.  Push  and  Pull  to  Gerrit  from  your  IDE  

Feature  in  EGit

Page 34: DWX 2013 Nuremberg

2.  Review  changes  in  your  IDE

Page 35: DWX 2013 Nuremberg

3.  Submit  the  approved  change

Page 36: DWX 2013 Nuremberg

4.  Get  noJficaJons  about  new  change-­‐sets

Page 37: DWX 2013 Nuremberg

Mylyn  Builds

Page 38: DWX 2013 Nuremberg

WHEN  EDITING  SOURCE  CODEThe  simple  basics...

Page 39: DWX 2013 Nuremberg

Smart  Semicolons  &  Braces

Page 40: DWX 2013 Nuremberg

Matching  Enclosing  Brackets

Page 41: DWX 2013 Nuremberg

“Faster”  IntelliJ-­‐like  Code  CompleJon

.abcdefghijklmnopqrstuvwxyz

Page 42: DWX 2013 Nuremberg

Favorites  for  import static

Page 43: DWX 2013 Nuremberg

Type  Filters

Page 44: DWX 2013 Nuremberg

WHEN  DEBUGGING  IN  ECLIPSEThe  hidden  and  rarely  used  jewels...

Page 45: DWX 2013 Nuremberg

Step  Filtering

Page 46: DWX 2013 Nuremberg

Debug  Details  Formamer

Page 47: DWX 2013 Nuremberg

Debug  Logical  Structure

Page 48: DWX 2013 Nuremberg

Extending  Logical  Structures

Page 49: DWX 2013 Nuremberg

Extending  Logical  Structures

Page 50: DWX 2013 Nuremberg

Heap  Walking

Page 51: DWX 2013 Nuremberg

Eclipse  Memory  Analyzer  (MAT)

Page 52: DWX 2013 Nuremberg

Drop  to  Frame

Page 53: DWX 2013 Nuremberg
Page 54: DWX 2013 Nuremberg

JRebel  Feature  Comparison  Matrix

Page 55: DWX 2013 Nuremberg

Supported  Frameworks

Page 56: DWX 2013 Nuremberg

Get  it  from  Eclipse  Marketplace

Page 57: DWX 2013 Nuremberg

Test  Coverage  with  EclEmma

Page 58: DWX 2013 Nuremberg

Test  Coverage  with  EclEmma

Page 59: DWX 2013 Nuremberg

CODE  COMPLETIONS  IN  ECLIPSESmarter  than  I  expected...

Page 60: DWX 2013 Nuremberg

Into  Code-­‐Comple`on  Wonderland

Page 61: DWX 2013 Nuremberg

⌘1

Page 62: DWX 2013 Nuremberg

Quick  Fix  –  ⌘1

Page 63: DWX 2013 Nuremberg

⌘2

Page 64: DWX 2013 Nuremberg

Quick  Assist  –  ⌘2

Page 65: DWX 2013 Nuremberg

⌃  Space

Page 66: DWX 2013 Nuremberg

Content  Assist  –  ⌃Space

Page 67: DWX 2013 Nuremberg

⌃  .

Page 68: DWX 2013 Nuremberg

SUBWORDS  COMPLETION“BecauseCamelCaseMatching****s!”

Page 69: DWX 2013 Nuremberg

Subwords  CompleJon

Page 70: DWX 2013 Nuremberg

Install  Subwords  from  Eclipse  Marketplace

Page 71: DWX 2013 Nuremberg

So  many  wonderful  engines?

Page 72: DWX 2013 Nuremberg

"[In  Eclipse]  sort  by  relevance  is  synonymous  to  alphabe`cal.  In  other  words  it  sucks...  but  in  a  predictably  alphabe`cal  

way."

Page 73: DWX 2013 Nuremberg

@Overrideprotected Control createDialogArea(final Composite parent) { Composite container = (Composite) super.createDialogArea(parent); swtTextWidget = new Text(container, SWT.BORDER); swtTextWidget.| return container;}

What  Emmanuel  gets

What  does  Emmanuel  get  when  triggering  code  comple`on  here?

Page 74: DWX 2013 Nuremberg

All  164  proposals  sorted  by  “Relevance”

Page 75: DWX 2013 Nuremberg

What  Emanuel  wants...

Page 76: DWX 2013 Nuremberg

Learning  Constructor  CompleJons

Page 77: DWX 2013 Nuremberg

 Codetrails  Hippie  CompleJon

Page 78: DWX 2013 Nuremberg
Page 79: DWX 2013 Nuremberg

And  win  10  Raspberry  PIs!

Page 80: DWX 2013 Nuremberg

How  about  IntelliJ  and  Netbeans?  Tweet!

Netbeans:

@geertjanw  Crowdsourced  Hippie  Comple`on  is  very  cool!  When  can  I  have  it  for  Netbeans?

IntelliJ:

@andrey_cheptsov  Crowdsourced  Hippie  Comple`on  is  very  cool!  When  can  I  have  it  in  IntelliJ?

Page 81: DWX 2013 Nuremberg

 It’s  `me  to  share!

Page 82: DWX 2013 Nuremberg

CAN  WE  GET  IT  EVEN  SMARTER?

Page 83: DWX 2013 Nuremberg
Page 84: DWX 2013 Nuremberg

What  Emmanuel  wants...

…  the  most  likely  ones.  

Page 85: DWX 2013 Nuremberg

Recap

Page 86: DWX 2013 Nuremberg

Call  CompleJon

Page 87: DWX 2013 Nuremberg

Code  Snippet  CompleJon

Page 88: DWX 2013 Nuremberg

Overrides  CompleJon

Page 89: DWX 2013 Nuremberg

Chain  CompleJon

Page 90: DWX 2013 Nuremberg

How  it  works

90

Code  Recommenders  Knowledge  Base

❷Mine  data,extract  code  pamerns,create  recommendaJon  models

❸deliver  minedknowledge  to  Eclipse  users

❶  Analyze  source  code

Page 91: DWX 2013 Nuremberg

“And  what  about  my  APIs?”

Page 92: DWX 2013 Nuremberg

Demo:  Mining  the  JavaFX  APIs

Page 93: DWX 2013 Nuremberg

Get  the  Developer  Preview

www.

.com/download

Page 94: DWX 2013 Nuremberg

How  about  IntelliJ  and  Netbeans?  Tweet!

Netbeans:

@geertjanw  Code  Recommenders  is  very  cool!  When  can  I  have  it  for  Netbeans?

IntelliJ:

@andrey_cheptsov  Code  Recommenders  is  very  cool!  When  can  I  have  it  in  IntelliJ?

Page 95: DWX 2013 Nuremberg

NULL  ANNOTATIONS  IN  ECLIPSE  Gerng  rid  of  NullPointerExcepJons...

Page 96: DWX 2013 Nuremberg

PrevenJng  NullPointerExcepJons

Page 97: DWX 2013 Nuremberg

Enabling  Null  Analysis

Page 98: DWX 2013 Nuremberg

Overriding  Null  Analysis  AnnotaJons

Page 99: DWX 2013 Nuremberg

GENERAL  TOOLS  FOR  ECLIPSE  4

Page 100: DWX 2013 Nuremberg

PIMP  YOUR  ECLIPSEEclipse  4  UI  was  torn  into  shreds.  Is  there  any  easy  way  to  get  a  nice  UI?

Page 101: DWX 2013 Nuremberg

Eclipse  4  Chrome  Theme  

Page 102: DWX 2013 Nuremberg

Eclipse  4  Chrome  Theme

Page 103: DWX 2013 Nuremberg

Get  it  from  Eclipse  Marketplace

Page 104: DWX 2013 Nuremberg

Eclipse  Color  Theme

Page 105: DWX 2013 Nuremberg

Eclipse  Color  Theme

Page 106: DWX 2013 Nuremberg

Eclipse  Color  Theme

Page 107: DWX 2013 Nuremberg

SHARING  PREFERENCES  IN  ENTERPRISESSame  serngs  everywhere...

Page 108: DWX 2013 Nuremberg

Any  default  value  can  be  overridden  by  a  properJes  file  specified  on  startup  as  follows:

Preferences

-- launch --

eclipse.exe

-plugincustomization /path/to/plugin_customization.ini

-- plugin_customization.ini --

org.eclipse.jdt.ui/content_assist_autoactivation_triggers_java=.org.eclipse.jdt.ui/content_assist_autoactivation_delay=5

Page 109: DWX 2013 Nuremberg

Workspace  Mechanic

Page 110: DWX 2013 Nuremberg

Workspace  Mechanic  -­‐  DetecJng  Issues

Page 111: DWX 2013 Nuremberg

Workspace  Mechanic  -­‐  Fix  it!

Page 112: DWX 2013 Nuremberg

Configuring  Workspace  Mechanic

Page 113: DWX 2013 Nuremberg

Configuring  Workspace  Mechanic

Page 114: DWX 2013 Nuremberg

Configuring  Workspace  Mechanic

Page 115: DWX 2013 Nuremberg

ECLIPSE  AND  (REMOTE)  SHELLS

Page 116: DWX 2013 Nuremberg

Easy  Shell

Page 117: DWX 2013 Nuremberg

EasyShell

Page 118: DWX 2013 Nuremberg

Remote  Systems  Explorer

Page 119: DWX 2013 Nuremberg

Virtual  Machine  Serngs

Take  with  a  grain  of  salt!  

Every  VM  and  Eclipse  installaXon  is  different.-­‐Xincgc-­‐Xss1m-­‐Duser.name=FirstName  LastName-­‐Dfile.encoding=UTF-­‐8-­‐Dosgi.requiredJavaVersion=1.7-­‐Declipse.p2.unsignedPolicy=allow-­‐Declipse.p2.MD5Check=false-­‐Xms512m-­‐Xmx2g-­‐XX:NewSize=16m-­‐XX:PermSize=120m-­‐XX:MaxPermSize=300m-­‐XX:MaxPermHeapExpansion=20m-­‐XX:+UseConcMarkSweepGC-­‐XX:CMSInitiatingOccupancyFraction=70-­‐XX:+UseCMSInitiatingOccupancyOnly-­‐XX:+UseParNewGC-­‐XX:+CMSConcurrentMTEnabled-­‐XX:ConcGCThreads=2-­‐XX:ParallelGCThreads=2-­‐XX:+CMSIncrementalPacing-­‐XX:CMSIncrementalDutyCycleMin=0-­‐XX:CMSIncrementalDutyCycle=5-­‐XX:GCTimeRatio=49-­‐XX:MaxGCPauseMillis=20-­‐XX:GCPauseIntervalMillis=1000-­‐XX:+UseCMSCompactAtFullCollection-­‐XX:+CMSClassUnloadingEnabled-­‐XX:+DoEscapeAnalysis-­‐XX:+UseCompressedOops-­‐XX:+AggressiveOpts-­‐XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses

Page 120: DWX 2013 Nuremberg

BUILD  YOUR  OWN  ECLIPSE  -­‐  ECLIPSE  CBI

Page 121: DWX 2013 Nuremberg

All  you  need

#> git clone -b master --recursive git://git.eclipse.org/ gitroot/platform/eclipse.platform.releng.aggregator.git

#> mvn clean verify

Page 122: DWX 2013 Nuremberg

supported  by

The  Knowledge  Transfer  Company

Page 123: DWX 2013 Nuremberg

THANKS