Top Banner
Tips, Tricks & Tools every Eclipse User should know
123

DWX 2013 Nuremberg

May 10, 2015

Download

Technology

Marcel Bruch

Eclipse Tips, Tricks and Tools. Tools every developer should know.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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