SlideShare uma empresa Scribd logo
1 de 74
Baixar para ler offline
JavaBlast
engage 2014
René Winkelmeyer
midpoints GmbH
René Winkelmeyer
Senior Consultant
midpoints GmbH
http://www.midpoints.de
IBM Advanced Business Partner
IBM Design Partner
Services
•  Notes / Domino Consulting
•  E-Mail Management
•  Mobile
Products
•  IBM Notes Traveler planning & deployment
•  mobile app development
•  Domino based iOS Device Management
•  Domino based “Dropbox” for Notes and iOS
About me
René Winkelmeyer
Senior Consultant
•  Skype
muenzpraeger
•  Twitter
muenzpraeger
•  LinkedIn
muenzpraeger
•  Slideshare
muenzpraeger
•  Web
http://blog.winkelmeyer.com
http://www.midpoints.de
•  Mail
mail@winkelmeyer.com
rene.winkelmeyer@midpoints.de
OpenNTF
•  File Navigator
•  Generic NSF View Widget for IBM Connections
About me
4
What’s this session about?
§  This session is about Java and Eclipse.
§  The goal is to make your life as an developer easier.
§  Most of the content can be applied to Java in Domino and to Domino
Designer.
§  The views are my own – yours may be different. ;-)
Tip #1:
Don’t return NULL values
§  Returning NULL from your own methods is a bad behavior.
§  Forces people to doublecheck for NULL and values.
§  Instead return something „empty“ or your own „NULL“.
Tip #1:
Don’t return NULL values
7
Tip #2:
Use the Eclipse Marketplace for IDE enhancements
§  Thousands of helpful (and sometimes not helpful) addons are
available for Eclipse
§  Just go to the Eclipse Marketplace and search for your favorite term
8
Tip #3:
Style your Editor like you want
§  People have different opinions on which kind of text display is better
(for their eyes)
§  Black text on white background
§  White text on black background
§  Colored text on white background
§  Colored text on black background
§  xxx text on xxx background
9
Tip #3:
Style your Editor like you want
§  The „Eclipse Color Theme“ plug-in comes to your rescue.
§  Different color codings (background, text etc.) for different
editors within Eclipse
10
Tip #3:
Style your Editor like you want
§  Header
§  Content
11
Tip #3:
Style your Editor like you want
12
Tip #4:
Easy access to the files of your projects
§  „StartExplorer“ give you the capability to access the physical files
of your Java project directly from within the IDE.
13
Tip #4:
Easy access to the files of your projects
§  Open shell at the file/folder location
§  Open Explorer/Finder/Nautilus etc at the file/folder location
§  Execute custom commands against the file/folder
14
Tip #4:
Easy access to the files of your projects
15
Tip #5:
Intelligent Code recommendation
§  Replace the built-in content assist with „Code Recommenders“ –
and learn how others use and built code.
16
Tip #5:
Intelligent Code recommendation
§  „Favorites“ at the top of the new content assist show you what
others have mostly used.
17
Tip #5:
Intelligent Code recommendation
18
Tip #5:
Intelligent Code recommendation
19
Tip #6:
Use meaningful names in your code
§  Use meaningful names – ‘nuff said.
20
Tip #7:
Ease code comment generation
§  Option 1: Write /** at the top of a method and press ENTER.
21
Tip #7:
Ease code comment generation
§  Option 2: Auto-generate comments for selected elements
22
Tip #8:
Don’t document your code for documentation purposes
§  Good documentation describes why the code is doing what is does
– not what it‘s doing.
23
Tip #8:
Don’t document your code for documentation purposes
§  Good documentation describes why the code is doing what is does
– not what it‘s doing.
24
Tip #9:
Code styling – for projects and workspaces
§  Having a similar pattern for „how code looks like“ makes it easier to
read, understand and maintain.
§  That‘s even more essential when working in a team.
25
Tip #9:
Code styling – for projects and workspaces
26
Tip #9:
Code styling – for projects and workspaces
27
Tip #9:
Code styling – for projects and workspaces
28
Tip #10:
Awesome “Reflection”s
§  Reflection is the ability to make modifications at runtime by making
use of Type Introspections.
§  i. e. it allows you to add a JAR at runtime even if it‘s not in the
classpath
§  „setAccessible“ is for men, not for boys!
29
Tip #11:
Type-safe Enumerations
§  Enumerations (or short: enums) are a rock-solid alternative to the
commonly used static int or String constants.
30
Tip #11:
Type-safe Enumerations
31
Tip #11:
Type-safe Enumerations
32
Tip #11:
Type-safe Enumerations
33
Tip #12:
Use Buffered streams for I/O operations
§  Use Buffered streams for I/O operations whenever possible.
§  Unbuffered streams
§  Read and write is handled by the OS directly, which may lead to
heavy disk usage
§  Buffered streams
§  Read and write is handled in-memory
34
Tip #12:
Use Buffered streams for I/O operations
35
Tip #13:
Singleton – instance
§  Singletons are bad. Some people say. Others really like them.
§  The main use case for a Singleton is to have data available across
classes. Think „global“.
36
Tip #13:
Singleton – instance
§  Instantiated at the first call. Really handy if you run multi-threaded or
concurrent access against the same data.
37
Tip #13:
Singleton – instance
38
Tip #14:
The Builder pattern
§  A Builder gives you the capability to wrap complex objects into a
fluent interface.
39
Tip #14:
The Builder pattern
40
Tip #15:
Serialize and Deserialize
§  Serialization allows you to store (serizalizable) Objects in a JVM-
independent way.
§  It‘s a byte representation of the objects type and the objects data.
§  The object needs to implement java.io.Serializable.
41
Tip #15:
Serialize and Deserialize
42
Tip #15:
Serialize and Deserialize
43
Tip #16:
Find Your Bugs
§  Employ good coding practises (and find bad ones) using „FindBugs“
from the Eclipse Marketplace.
44
Tip #16:
Find Your Bugs
45
Tip #16:
Find Your Bugs
§  You‘ll see the output right within your IDE.
46
Tip #16:
Find Your Bugs
§  You‘ll see the output right within your IDE.
47
Tip #17:
Transform to HTML-escaped characters
§  Had ever the need to convert (special) characters to HTML encoded
strings?
§  Several 3rd party libraries (i. e. Apache) are available for that.
§  Leverage the built-in capabilities. A „char“ is represented as a
number. So it‘s an easy one to encode that one.
48
Tip #17:
Transform to HTML-escaped characters
49
Tip #18:
Pass „unlimited“ objects as method arguments
§  Pass „unlimited“ objects as method values just by adding „...“ to the
end of the class name.
50
Tip #19:
Accessing localized ressources
§  If you localize your applications make your that you can easily
access it by placing it in your package.
51
Tip #20:
Edit your properties properly escaped
§  Working with localization could be very interesting. Different
charsets in different languages.
§  Those localized files are normally placed in files like
„messages_nl.properties“, „messages_de.properties“ and so on.
52
Tip #20:
Edit your properties properly escaped
§  For a proper display they need to be converted to ASCII.
§  One easy way is to convert them via the built-in tool „native2ascii“.
The binary is located within the /bin folder of your Java distribution.
53
Tip #20:
Edit your properties properly escaped
§  An alternative approach is to use the „Properties Editor“ plugin.
§  It converts the text to ASCII when you save the file!
54
Tip #21:
Use “finally” for cleaning up
§  „finally“ you can clean up.
§  Think about closing I/O connections, recycle Domino objects etc.
55
Tip #21:
Use “finally” for cleaning up
56
Tip #22:
Debugging is simple – just do it
57
Tip #23:
Debug Detail formatters give you value insights
§  Inspecting current object and variable values while debugging code
is one of the big benefits using Eclipse.
§  Change your variables and/or issue commands/methods against
them.
§  It applies also to Domino Java objects!
58
Tip #23:
Debug Detail formatters give you value insights
59
Tip #23:
Debug Detail formatters give you value insights
60
Tip #24:
Recycle, recycle, recycle
§  Recycling is important in Domino!
§  Recycling is important in Domino!
§  Recycling is important in Domino!
§  Recycling is important in Domino!
§  Recycling is important in Domino!
§  Recycling is important in Domino!
§  Recycling is important in Domino!
61
Tip #24:
Recycle, recycle, recycle
§  Free‘ing the Cpp-Handle is critical, as ressources are limited on the
server.
§  Free‘ing the parent normally frees the children.
§  Keep your house clean, i. e. always recycle EmbeddedObjects.
62
Tip #24:
Recycle, recycle, recycle
§  Running a NSD gives you insights of the currently used backend
handles.
§  If you‘re still on 8.5.2 => Upgrade!
63
Tip #25:
Exceptions are not for control-flow
§  Use Exceptions for stuff you can recover and for unexpected
conditions.
64
Tip #25:
Exceptions are not for control-flow
65
Tip #25:
Exceptions are not for control-flow
66
Tip #26:
Typed vs. Un-Typed Collections
§  Typed collections make your life much more easier.
§  You see in the code what type it is.
§  No need for casting
§  Easier for looping (instead of using an iterator)
67
Tip #26:
Typed vs. Un-Typed Collections
68
Tip #26:
Typed vs. Un-Typed Collections
69
Tip #27:
Don’t concatenate too much
§  Even if it‘s convenient – try to avoid „too much“ method
concatenation.
§  Makes your life a lot easier, especially during development and
debugging.
70
Tip #27:
Don’t concatenate too much
71
Tip #28:
Accessible fields
§  Fields should always be private except for constants
§  Accessible fields cause tight coupling
§  They are corruptible
§  If a field needs to be accessed => use „Getter“ and „Setter“
72
Tip #28:
Accessible fields
73
Tip #29:
Keep code clean
§  Delete not-needed / „out-commented“ code
§  Your SCM takes care of the history.
74
Thank you very much!

Mais conteúdo relacionado

Mais procurados

HTML5 or Android for Mobile Development?
HTML5 or Android for Mobile Development?HTML5 or Android for Mobile Development?
HTML5 or Android for Mobile Development?Reto Meier
 
1ST TECH TALK: "Yii : The MVC framework" by Benedicto B. Balilo Jr.
1ST TECH TALK: "Yii : The MVC framework" by Benedicto B. Balilo Jr.1ST TECH TALK: "Yii : The MVC framework" by Benedicto B. Balilo Jr.
1ST TECH TALK: "Yii : The MVC framework" by Benedicto B. Balilo Jr.Bicol IT.org
 
Symfony Day 2009 - Symfony vs Integrating products
Symfony Day 2009 - Symfony vs Integrating productsSymfony Day 2009 - Symfony vs Integrating products
Symfony Day 2009 - Symfony vs Integrating productsXavier Lacot
 
Phonegap
PhonegapPhonegap
PhonegapTim Kim
 
快快樂樂利用 PhoneGap 打造屬於自己的 App
快快樂樂利用 PhoneGap 打造屬於自己的 App快快樂樂利用 PhoneGap 打造屬於自己的 App
快快樂樂利用 PhoneGap 打造屬於自己的 Appericpi Bi
 
Engage 2019 - De04. Java with Domino After XPages
Engage 2019 - De04. Java with Domino After XPagesEngage 2019 - De04. Java with Domino After XPages
Engage 2019 - De04. Java with Domino After XPagesJesse Gallagher
 
NCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile AppsNCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile AppsJohn M. Wargo
 
Phonegap/Cordova vs Native Application
Phonegap/Cordova vs Native ApplicationPhonegap/Cordova vs Native Application
Phonegap/Cordova vs Native ApplicationMuhammad Hakim A
 
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...Serdar Basegmez
 
Strategies for securing your banks & enterprises (from someone who robs bank...
 Strategies for securing your banks & enterprises (from someone who robs bank... Strategies for securing your banks & enterprises (from someone who robs bank...
Strategies for securing your banks & enterprises (from someone who robs bank...ITCamp
 
Wireframing with balsamiq by Chandeep
Wireframing with balsamiq by ChandeepWireframing with balsamiq by Chandeep
Wireframing with balsamiq by ChandeepDignitasDigital1
 
Nvc2012 it module4_avig
Nvc2012 it module4_avigNvc2012 it module4_avig
Nvc2012 it module4_avigCU_NVC
 
How to do Scalable UI-Heavy Development at a Breakneck Pace
How to do Scalable UI-Heavy Development at a Breakneck PaceHow to do Scalable UI-Heavy Development at a Breakneck Pace
How to do Scalable UI-Heavy Development at a Breakneck PaceSV Ruby on Rails Meetup
 
Cordova and PhoneGap Insights
Cordova and PhoneGap InsightsCordova and PhoneGap Insights
Cordova and PhoneGap InsightsMonaca
 
Glorium Technologies Highlights
Glorium Technologies HighlightsGlorium Technologies Highlights
Glorium Technologies HighlightsVlad Makarov
 
PhoneGap - Now and the Future
PhoneGap - Now and the FuturePhoneGap - Now and the Future
PhoneGap - Now and the FutureTim Kim
 
Ease into HTML5 and CSS3
Ease into HTML5 and CSS3Ease into HTML5 and CSS3
Ease into HTML5 and CSS3Brian Moon
 
Ruby and iOS: An inside look
Ruby and iOS: An inside lookRuby and iOS: An inside look
Ruby and iOS: An inside lookJeanine Jue
 
Quo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynoteQuo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynoteChristian Heilmann
 

Mais procurados (20)

HTML5 or Android for Mobile Development?
HTML5 or Android for Mobile Development?HTML5 or Android for Mobile Development?
HTML5 or Android for Mobile Development?
 
1ST TECH TALK: "Yii : The MVC framework" by Benedicto B. Balilo Jr.
1ST TECH TALK: "Yii : The MVC framework" by Benedicto B. Balilo Jr.1ST TECH TALK: "Yii : The MVC framework" by Benedicto B. Balilo Jr.
1ST TECH TALK: "Yii : The MVC framework" by Benedicto B. Balilo Jr.
 
Symfony Day 2009 - Symfony vs Integrating products
Symfony Day 2009 - Symfony vs Integrating productsSymfony Day 2009 - Symfony vs Integrating products
Symfony Day 2009 - Symfony vs Integrating products
 
Phonegap
PhonegapPhonegap
Phonegap
 
快快樂樂利用 PhoneGap 打造屬於自己的 App
快快樂樂利用 PhoneGap 打造屬於自己的 App快快樂樂利用 PhoneGap 打造屬於自己的 App
快快樂樂利用 PhoneGap 打造屬於自己的 App
 
Engage 2019 - De04. Java with Domino After XPages
Engage 2019 - De04. Java with Domino After XPagesEngage 2019 - De04. Java with Domino After XPages
Engage 2019 - De04. Java with Domino After XPages
 
NCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile AppsNCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile Apps
 
Phonegap/Cordova vs Native Application
Phonegap/Cordova vs Native ApplicationPhonegap/Cordova vs Native Application
Phonegap/Cordova vs Native Application
 
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
 
Strategies for securing your banks & enterprises (from someone who robs bank...
 Strategies for securing your banks & enterprises (from someone who robs bank... Strategies for securing your banks & enterprises (from someone who robs bank...
Strategies for securing your banks & enterprises (from someone who robs bank...
 
Wireframing with balsamiq by Chandeep
Wireframing with balsamiq by ChandeepWireframing with balsamiq by Chandeep
Wireframing with balsamiq by Chandeep
 
Nvc2012 it module4_avig
Nvc2012 it module4_avigNvc2012 it module4_avig
Nvc2012 it module4_avig
 
How to do Scalable UI-Heavy Development at a Breakneck Pace
How to do Scalable UI-Heavy Development at a Breakneck PaceHow to do Scalable UI-Heavy Development at a Breakneck Pace
How to do Scalable UI-Heavy Development at a Breakneck Pace
 
Mini-Training: NDepend
Mini-Training: NDependMini-Training: NDepend
Mini-Training: NDepend
 
Cordova and PhoneGap Insights
Cordova and PhoneGap InsightsCordova and PhoneGap Insights
Cordova and PhoneGap Insights
 
Glorium Technologies Highlights
Glorium Technologies HighlightsGlorium Technologies Highlights
Glorium Technologies Highlights
 
PhoneGap - Now and the Future
PhoneGap - Now and the FuturePhoneGap - Now and the Future
PhoneGap - Now and the Future
 
Ease into HTML5 and CSS3
Ease into HTML5 and CSS3Ease into HTML5 and CSS3
Ease into HTML5 and CSS3
 
Ruby and iOS: An inside look
Ruby and iOS: An inside lookRuby and iOS: An inside look
Ruby and iOS: An inside look
 
Quo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynoteQuo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynote
 

Semelhante a engage 2014 - JavaBlast

The View - The top 30 Development tips
The View - The top 30 Development tipsThe View - The top 30 Development tips
The View - The top 30 Development tipsBill Buchan
 
Writing Readable Code
Writing Readable CodeWriting Readable Code
Writing Readable Codeeddiehaber
 
The View - 30 proven Lotuscript tips
The View - 30 proven Lotuscript tipsThe View - 30 proven Lotuscript tips
The View - 30 proven Lotuscript tipsBill Buchan
 
Half-automatic Compilable Source Code Recovery
Half-automatic Compilable Source Code RecoveryHalf-automatic Compilable Source Code Recovery
Half-automatic Compilable Source Code RecoveryJoxean Koret
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedAlexander Makarov
 
Way #5 Don’t end up in a ditch because you weren’t aware of roadblocks in you...
Way #5 Don’t end up in a ditch because you weren’t aware of roadblocks in you...Way #5 Don’t end up in a ditch because you weren’t aware of roadblocks in you...
Way #5 Don’t end up in a ditch because you weren’t aware of roadblocks in you...panagenda
 
Scaling the synchronous web - Elaine Wherry
Scaling the synchronous web - Elaine WherryScaling the synchronous web - Elaine Wherry
Scaling the synchronous web - Elaine WherryCarsonified Team
 
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLEAN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLEGavin Pickin
 
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE - CFObjective() 2017
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE - CFObjective() 2017AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE - CFObjective() 2017
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE - CFObjective() 2017Ortus Solutions, Corp
 
14 Habits of Great SQL Developers
14 Habits of Great SQL Developers14 Habits of Great SQL Developers
14 Habits of Great SQL DevelopersIke Ellis
 
How have we developed product without bugs
How have we developed product without bugsHow have we developed product without bugs
How have we developed product without bugsSigma Software
 
The Good, the Bad and the Ugly things to do with android
The Good, the Bad and the Ugly things to do with androidThe Good, the Bad and the Ugly things to do with android
The Good, the Bad and the Ugly things to do with androidStanojko Markovik
 
The View - Lotusscript coding best practices
The View - Lotusscript coding best practicesThe View - Lotusscript coding best practices
The View - Lotusscript coding best practicesBill Buchan
 
14 Habits of Great SQL Developers
14 Habits of Great SQL Developers14 Habits of Great SQL Developers
14 Habits of Great SQL DevelopersIke Ellis
 
Don't let your tests slow you down
Don't let your tests slow you downDon't let your tests slow you down
Don't let your tests slow you downDaniel Irvine
 
The 10 Commandments of Building Global Software
The 10 Commandments of Building Global SoftwareThe 10 Commandments of Building Global Software
The 10 Commandments of Building Global SoftwareAndrey Akselrod
 
10 Tips for Configuring Your Builds with Bamboo Specs
10 Tips for Configuring Your Builds with Bamboo Specs10 Tips for Configuring Your Builds with Bamboo Specs
10 Tips for Configuring Your Builds with Bamboo SpecsAtlassian
 
Gearman: A Job Server made for Scale
Gearman: A Job Server made for ScaleGearman: A Job Server made for Scale
Gearman: A Job Server made for ScaleMike Willbanks
 
Understanding & analyzing obfuscated malicious web scripts by Vikram Kharvi
Understanding & analyzing obfuscated malicious web scripts by Vikram KharviUnderstanding & analyzing obfuscated malicious web scripts by Vikram Kharvi
Understanding & analyzing obfuscated malicious web scripts by Vikram KharviCysinfo Cyber Security Community
 

Semelhante a engage 2014 - JavaBlast (20)

The View - The top 30 Development tips
The View - The top 30 Development tipsThe View - The top 30 Development tips
The View - The top 30 Development tips
 
Writing Readable Code
Writing Readable CodeWriting Readable Code
Writing Readable Code
 
The View - 30 proven Lotuscript tips
The View - 30 proven Lotuscript tipsThe View - 30 proven Lotuscript tips
The View - 30 proven Lotuscript tips
 
Half-automatic Compilable Source Code Recovery
Half-automatic Compilable Source Code RecoveryHalf-automatic Compilable Source Code Recovery
Half-automatic Compilable Source Code Recovery
 
Caveats
CaveatsCaveats
Caveats
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developed
 
Way #5 Don’t end up in a ditch because you weren’t aware of roadblocks in you...
Way #5 Don’t end up in a ditch because you weren’t aware of roadblocks in you...Way #5 Don’t end up in a ditch because you weren’t aware of roadblocks in you...
Way #5 Don’t end up in a ditch because you weren’t aware of roadblocks in you...
 
Scaling the synchronous web - Elaine Wherry
Scaling the synchronous web - Elaine WherryScaling the synchronous web - Elaine Wherry
Scaling the synchronous web - Elaine Wherry
 
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLEAN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
 
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE - CFObjective() 2017
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE - CFObjective() 2017AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE - CFObjective() 2017
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE - CFObjective() 2017
 
14 Habits of Great SQL Developers
14 Habits of Great SQL Developers14 Habits of Great SQL Developers
14 Habits of Great SQL Developers
 
How have we developed product without bugs
How have we developed product without bugsHow have we developed product without bugs
How have we developed product without bugs
 
The Good, the Bad and the Ugly things to do with android
The Good, the Bad and the Ugly things to do with androidThe Good, the Bad and the Ugly things to do with android
The Good, the Bad and the Ugly things to do with android
 
The View - Lotusscript coding best practices
The View - Lotusscript coding best practicesThe View - Lotusscript coding best practices
The View - Lotusscript coding best practices
 
14 Habits of Great SQL Developers
14 Habits of Great SQL Developers14 Habits of Great SQL Developers
14 Habits of Great SQL Developers
 
Don't let your tests slow you down
Don't let your tests slow you downDon't let your tests slow you down
Don't let your tests slow you down
 
The 10 Commandments of Building Global Software
The 10 Commandments of Building Global SoftwareThe 10 Commandments of Building Global Software
The 10 Commandments of Building Global Software
 
10 Tips for Configuring Your Builds with Bamboo Specs
10 Tips for Configuring Your Builds with Bamboo Specs10 Tips for Configuring Your Builds with Bamboo Specs
10 Tips for Configuring Your Builds with Bamboo Specs
 
Gearman: A Job Server made for Scale
Gearman: A Job Server made for ScaleGearman: A Job Server made for Scale
Gearman: A Job Server made for Scale
 
Understanding & analyzing obfuscated malicious web scripts by Vikram Kharvi
Understanding & analyzing obfuscated malicious web scripts by Vikram KharviUnderstanding & analyzing obfuscated malicious web scripts by Vikram Kharvi
Understanding & analyzing obfuscated malicious web scripts by Vikram Kharvi
 

Mais de René Winkelmeyer

2017 engage.ug - Salesforce and IBM for Developers
2017 engage.ug - Salesforce and IBM for Developers2017 engage.ug - Salesforce and IBM for Developers
2017 engage.ug - Salesforce and IBM for DevelopersRené Winkelmeyer
 
2016 ISBG - Enterprise integration done right with Salesforce Lightning, IBM ...
2016 ISBG - Enterprise integration done right with Salesforce Lightning, IBM ...2016 ISBG - Enterprise integration done right with Salesforce Lightning, IBM ...
2016 ISBG - Enterprise integration done right with Salesforce Lightning, IBM ...René Winkelmeyer
 
2016 ISBG - Salesforce App Cloud and Domino - same same, but different
2016 ISBG - Salesforce App Cloud and Domino - same same, but different2016 ISBG - Salesforce App Cloud and Domino - same same, but different
2016 ISBG - Salesforce App Cloud and Domino - same same, but differentRené Winkelmeyer
 
2016 SUTOL - Salesforce App Cloud and Domino - same same, but different
2016 SUTOL - Salesforce App Cloud and Domino - same same, but different2016 SUTOL - Salesforce App Cloud and Domino - same same, but different
2016 SUTOL - Salesforce App Cloud and Domino - same same, but differentRené Winkelmeyer
 
Salesforce Developer User Group Munich - October 2016
Salesforce Developer User Group Munich - October 2016Salesforce Developer User Group Munich - October 2016
Salesforce Developer User Group Munich - October 2016René Winkelmeyer
 
DNUG 2016 - Salesforce and IBM Domino - same same, but different
DNUG 2016 - Salesforce and IBM Domino - same same, but differentDNUG 2016 - Salesforce and IBM Domino - same same, but different
DNUG 2016 - Salesforce and IBM Domino - same same, but differentRené Winkelmeyer
 
engage 2016 - Get ready for moving from Java 6 to Java 8 - Now!
engage 2016 - Get ready for moving from Java 6 to Java 8 - Now!engage 2016 - Get ready for moving from Java 6 to Java 8 - Now!
engage 2016 - Get ready for moving from Java 6 to Java 8 - Now!René Winkelmeyer
 
Connect 2016 - Going Mobile With IBM Verse
Connect 2016 - Going Mobile With IBM VerseConnect 2016 - Going Mobile With IBM Verse
Connect 2016 - Going Mobile With IBM VerseRené Winkelmeyer
 
Connect 2016 - IBM Mobile Connect - Real World Usage Scenarios
Connect 2016 - IBM Mobile Connect - Real World Usage ScenariosConnect 2016 - IBM Mobile Connect - Real World Usage Scenarios
Connect 2016 - IBM Mobile Connect - Real World Usage ScenariosRené Winkelmeyer
 
SNoUG 2015 - Vaadin - XPages 2.0?
SNoUG 2015 - Vaadin - XPages 2.0?SNoUG 2015 - Vaadin - XPages 2.0?
SNoUG 2015 - Vaadin - XPages 2.0?René Winkelmeyer
 
engage 2015 - IBM Notes Traveler Daily Business
engage 2015 - IBM Notes Traveler Daily Businessengage 2015 - IBM Notes Traveler Daily Business
engage 2015 - IBM Notes Traveler Daily BusinessRené Winkelmeyer
 
engage 2015 - Domino App Development - Where should I go now?
engage 2015 - Domino App Development - Where should I go now?engage 2015 - Domino App Development - Where should I go now?
engage 2015 - Domino App Development - Where should I go now?René Winkelmeyer
 
ConnectED 2015 - IBM Notes Traveler Daily Business
ConnectED 2015 - IBM Notes Traveler Daily BusinessConnectED 2015 - IBM Notes Traveler Daily Business
ConnectED 2015 - IBM Notes Traveler Daily BusinessRené Winkelmeyer
 
ICONUK 2014 - From Idea To App
ICONUK 2014 - From Idea To AppICONUK 2014 - From Idea To App
ICONUK 2014 - From Idea To AppRené Winkelmeyer
 
EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedRené Winkelmeyer
 
Connect 2013 - Making IBM Traveler High Available: Extending And Securing The...
Connect 2013 - Making IBM Traveler High Available: Extending And Securing The...Connect 2013 - Making IBM Traveler High Available: Extending And Securing The...
Connect 2013 - Making IBM Traveler High Available: Extending And Securing The...René Winkelmeyer
 
Connect 2013 - Infrastructure Fitness and Design Simplicity for IBM Mobile Co...
Connect 2013 - Infrastructure Fitness and Design Simplicity for IBM Mobile Co...Connect 2013 - Infrastructure Fitness and Design Simplicity for IBM Mobile Co...
Connect 2013 - Infrastructure Fitness and Design Simplicity for IBM Mobile Co...René Winkelmeyer
 
UKLUG 2011 - iOS devices in the enterprise
UKLUG 2011 - iOS devices in the enterpriseUKLUG 2011 - iOS devices in the enterprise
UKLUG 2011 - iOS devices in the enterpriseRené Winkelmeyer
 
ILUG 2010 - Deploying plug-ins to the enterprise
ILUG 2010 - Deploying plug-ins to the enterpriseILUG 2010 - Deploying plug-ins to the enterprise
ILUG 2010 - Deploying plug-ins to the enterpriseRené Winkelmeyer
 

Mais de René Winkelmeyer (20)

2017 engage.ug - Salesforce and IBM for Developers
2017 engage.ug - Salesforce and IBM for Developers2017 engage.ug - Salesforce and IBM for Developers
2017 engage.ug - Salesforce and IBM for Developers
 
2016 ISBG - Enterprise integration done right with Salesforce Lightning, IBM ...
2016 ISBG - Enterprise integration done right with Salesforce Lightning, IBM ...2016 ISBG - Enterprise integration done right with Salesforce Lightning, IBM ...
2016 ISBG - Enterprise integration done right with Salesforce Lightning, IBM ...
 
2016 ISBG - Salesforce App Cloud and Domino - same same, but different
2016 ISBG - Salesforce App Cloud and Domino - same same, but different2016 ISBG - Salesforce App Cloud and Domino - same same, but different
2016 ISBG - Salesforce App Cloud and Domino - same same, but different
 
2016 SUTOL - Salesforce App Cloud and Domino - same same, but different
2016 SUTOL - Salesforce App Cloud and Domino - same same, but different2016 SUTOL - Salesforce App Cloud and Domino - same same, but different
2016 SUTOL - Salesforce App Cloud and Domino - same same, but different
 
Salesforce Developer User Group Munich - October 2016
Salesforce Developer User Group Munich - October 2016Salesforce Developer User Group Munich - October 2016
Salesforce Developer User Group Munich - October 2016
 
DNUG 2016 - Salesforce and IBM Domino - same same, but different
DNUG 2016 - Salesforce and IBM Domino - same same, but differentDNUG 2016 - Salesforce and IBM Domino - same same, but different
DNUG 2016 - Salesforce and IBM Domino - same same, but different
 
engage 2016 - Get ready for moving from Java 6 to Java 8 - Now!
engage 2016 - Get ready for moving from Java 6 to Java 8 - Now!engage 2016 - Get ready for moving from Java 6 to Java 8 - Now!
engage 2016 - Get ready for moving from Java 6 to Java 8 - Now!
 
Connect 2016 - Going Mobile With IBM Verse
Connect 2016 - Going Mobile With IBM VerseConnect 2016 - Going Mobile With IBM Verse
Connect 2016 - Going Mobile With IBM Verse
 
Connect 2016 - IBM Mobile Connect - Real World Usage Scenarios
Connect 2016 - IBM Mobile Connect - Real World Usage ScenariosConnect 2016 - IBM Mobile Connect - Real World Usage Scenarios
Connect 2016 - IBM Mobile Connect - Real World Usage Scenarios
 
SNoUG 2015 - Vaadin - XPages 2.0?
SNoUG 2015 - Vaadin - XPages 2.0?SNoUG 2015 - Vaadin - XPages 2.0?
SNoUG 2015 - Vaadin - XPages 2.0?
 
ICONUK 2015 - Gradle Up!
ICONUK 2015 - Gradle Up!ICONUK 2015 - Gradle Up!
ICONUK 2015 - Gradle Up!
 
engage 2015 - IBM Notes Traveler Daily Business
engage 2015 - IBM Notes Traveler Daily Businessengage 2015 - IBM Notes Traveler Daily Business
engage 2015 - IBM Notes Traveler Daily Business
 
engage 2015 - Domino App Development - Where should I go now?
engage 2015 - Domino App Development - Where should I go now?engage 2015 - Domino App Development - Where should I go now?
engage 2015 - Domino App Development - Where should I go now?
 
ConnectED 2015 - IBM Notes Traveler Daily Business
ConnectED 2015 - IBM Notes Traveler Daily BusinessConnectED 2015 - IBM Notes Traveler Daily Business
ConnectED 2015 - IBM Notes Traveler Daily Business
 
ICONUK 2014 - From Idea To App
ICONUK 2014 - From Idea To AppICONUK 2014 - From Idea To App
ICONUK 2014 - From Idea To App
 
EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloaded
 
Connect 2013 - Making IBM Traveler High Available: Extending And Securing The...
Connect 2013 - Making IBM Traveler High Available: Extending And Securing The...Connect 2013 - Making IBM Traveler High Available: Extending And Securing The...
Connect 2013 - Making IBM Traveler High Available: Extending And Securing The...
 
Connect 2013 - Infrastructure Fitness and Design Simplicity for IBM Mobile Co...
Connect 2013 - Infrastructure Fitness and Design Simplicity for IBM Mobile Co...Connect 2013 - Infrastructure Fitness and Design Simplicity for IBM Mobile Co...
Connect 2013 - Infrastructure Fitness and Design Simplicity for IBM Mobile Co...
 
UKLUG 2011 - iOS devices in the enterprise
UKLUG 2011 - iOS devices in the enterpriseUKLUG 2011 - iOS devices in the enterprise
UKLUG 2011 - iOS devices in the enterprise
 
ILUG 2010 - Deploying plug-ins to the enterprise
ILUG 2010 - Deploying plug-ins to the enterpriseILUG 2010 - Deploying plug-ins to the enterprise
ILUG 2010 - Deploying plug-ins to the enterprise
 

Último

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 

Último (20)

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 

engage 2014 - JavaBlast

  • 2. René Winkelmeyer Senior Consultant midpoints GmbH http://www.midpoints.de IBM Advanced Business Partner IBM Design Partner Services •  Notes / Domino Consulting •  E-Mail Management •  Mobile Products •  IBM Notes Traveler planning & deployment •  mobile app development •  Domino based iOS Device Management •  Domino based “Dropbox” for Notes and iOS About me
  • 3. René Winkelmeyer Senior Consultant •  Skype muenzpraeger •  Twitter muenzpraeger •  LinkedIn muenzpraeger •  Slideshare muenzpraeger •  Web http://blog.winkelmeyer.com http://www.midpoints.de •  Mail mail@winkelmeyer.com rene.winkelmeyer@midpoints.de OpenNTF •  File Navigator •  Generic NSF View Widget for IBM Connections About me
  • 4. 4 What’s this session about? §  This session is about Java and Eclipse. §  The goal is to make your life as an developer easier. §  Most of the content can be applied to Java in Domino and to Domino Designer. §  The views are my own – yours may be different. ;-)
  • 5. Tip #1: Don’t return NULL values §  Returning NULL from your own methods is a bad behavior. §  Forces people to doublecheck for NULL and values. §  Instead return something „empty“ or your own „NULL“.
  • 7. 7 Tip #2: Use the Eclipse Marketplace for IDE enhancements §  Thousands of helpful (and sometimes not helpful) addons are available for Eclipse §  Just go to the Eclipse Marketplace and search for your favorite term
  • 8. 8 Tip #3: Style your Editor like you want §  People have different opinions on which kind of text display is better (for their eyes) §  Black text on white background §  White text on black background §  Colored text on white background §  Colored text on black background §  xxx text on xxx background
  • 9. 9 Tip #3: Style your Editor like you want §  The „Eclipse Color Theme“ plug-in comes to your rescue. §  Different color codings (background, text etc.) for different editors within Eclipse
  • 10. 10 Tip #3: Style your Editor like you want §  Header §  Content
  • 11. 11 Tip #3: Style your Editor like you want
  • 12. 12 Tip #4: Easy access to the files of your projects §  „StartExplorer“ give you the capability to access the physical files of your Java project directly from within the IDE.
  • 13. 13 Tip #4: Easy access to the files of your projects §  Open shell at the file/folder location §  Open Explorer/Finder/Nautilus etc at the file/folder location §  Execute custom commands against the file/folder
  • 14. 14 Tip #4: Easy access to the files of your projects
  • 15. 15 Tip #5: Intelligent Code recommendation §  Replace the built-in content assist with „Code Recommenders“ – and learn how others use and built code.
  • 16. 16 Tip #5: Intelligent Code recommendation §  „Favorites“ at the top of the new content assist show you what others have mostly used.
  • 17. 17 Tip #5: Intelligent Code recommendation
  • 18. 18 Tip #5: Intelligent Code recommendation
  • 19. 19 Tip #6: Use meaningful names in your code §  Use meaningful names – ‘nuff said.
  • 20. 20 Tip #7: Ease code comment generation §  Option 1: Write /** at the top of a method and press ENTER.
  • 21. 21 Tip #7: Ease code comment generation §  Option 2: Auto-generate comments for selected elements
  • 22. 22 Tip #8: Don’t document your code for documentation purposes §  Good documentation describes why the code is doing what is does – not what it‘s doing.
  • 23. 23 Tip #8: Don’t document your code for documentation purposes §  Good documentation describes why the code is doing what is does – not what it‘s doing.
  • 24. 24 Tip #9: Code styling – for projects and workspaces §  Having a similar pattern for „how code looks like“ makes it easier to read, understand and maintain. §  That‘s even more essential when working in a team.
  • 25. 25 Tip #9: Code styling – for projects and workspaces
  • 26. 26 Tip #9: Code styling – for projects and workspaces
  • 27. 27 Tip #9: Code styling – for projects and workspaces
  • 28. 28 Tip #10: Awesome “Reflection”s §  Reflection is the ability to make modifications at runtime by making use of Type Introspections. §  i. e. it allows you to add a JAR at runtime even if it‘s not in the classpath §  „setAccessible“ is for men, not for boys!
  • 29. 29 Tip #11: Type-safe Enumerations §  Enumerations (or short: enums) are a rock-solid alternative to the commonly used static int or String constants.
  • 33. 33 Tip #12: Use Buffered streams for I/O operations §  Use Buffered streams for I/O operations whenever possible. §  Unbuffered streams §  Read and write is handled by the OS directly, which may lead to heavy disk usage §  Buffered streams §  Read and write is handled in-memory
  • 34. 34 Tip #12: Use Buffered streams for I/O operations
  • 35. 35 Tip #13: Singleton – instance §  Singletons are bad. Some people say. Others really like them. §  The main use case for a Singleton is to have data available across classes. Think „global“.
  • 36. 36 Tip #13: Singleton – instance §  Instantiated at the first call. Really handy if you run multi-threaded or concurrent access against the same data.
  • 38. 38 Tip #14: The Builder pattern §  A Builder gives you the capability to wrap complex objects into a fluent interface.
  • 40. 40 Tip #15: Serialize and Deserialize §  Serialization allows you to store (serizalizable) Objects in a JVM- independent way. §  It‘s a byte representation of the objects type and the objects data. §  The object needs to implement java.io.Serializable.
  • 43. 43 Tip #16: Find Your Bugs §  Employ good coding practises (and find bad ones) using „FindBugs“ from the Eclipse Marketplace.
  • 45. 45 Tip #16: Find Your Bugs §  You‘ll see the output right within your IDE.
  • 46. 46 Tip #16: Find Your Bugs §  You‘ll see the output right within your IDE.
  • 47. 47 Tip #17: Transform to HTML-escaped characters §  Had ever the need to convert (special) characters to HTML encoded strings? §  Several 3rd party libraries (i. e. Apache) are available for that. §  Leverage the built-in capabilities. A „char“ is represented as a number. So it‘s an easy one to encode that one.
  • 48. 48 Tip #17: Transform to HTML-escaped characters
  • 49. 49 Tip #18: Pass „unlimited“ objects as method arguments §  Pass „unlimited“ objects as method values just by adding „...“ to the end of the class name.
  • 50. 50 Tip #19: Accessing localized ressources §  If you localize your applications make your that you can easily access it by placing it in your package.
  • 51. 51 Tip #20: Edit your properties properly escaped §  Working with localization could be very interesting. Different charsets in different languages. §  Those localized files are normally placed in files like „messages_nl.properties“, „messages_de.properties“ and so on.
  • 52. 52 Tip #20: Edit your properties properly escaped §  For a proper display they need to be converted to ASCII. §  One easy way is to convert them via the built-in tool „native2ascii“. The binary is located within the /bin folder of your Java distribution.
  • 53. 53 Tip #20: Edit your properties properly escaped §  An alternative approach is to use the „Properties Editor“ plugin. §  It converts the text to ASCII when you save the file!
  • 54. 54 Tip #21: Use “finally” for cleaning up §  „finally“ you can clean up. §  Think about closing I/O connections, recycle Domino objects etc.
  • 55. 55 Tip #21: Use “finally” for cleaning up
  • 56. 56 Tip #22: Debugging is simple – just do it
  • 57. 57 Tip #23: Debug Detail formatters give you value insights §  Inspecting current object and variable values while debugging code is one of the big benefits using Eclipse. §  Change your variables and/or issue commands/methods against them. §  It applies also to Domino Java objects!
  • 58. 58 Tip #23: Debug Detail formatters give you value insights
  • 59. 59 Tip #23: Debug Detail formatters give you value insights
  • 60. 60 Tip #24: Recycle, recycle, recycle §  Recycling is important in Domino! §  Recycling is important in Domino! §  Recycling is important in Domino! §  Recycling is important in Domino! §  Recycling is important in Domino! §  Recycling is important in Domino! §  Recycling is important in Domino!
  • 61. 61 Tip #24: Recycle, recycle, recycle §  Free‘ing the Cpp-Handle is critical, as ressources are limited on the server. §  Free‘ing the parent normally frees the children. §  Keep your house clean, i. e. always recycle EmbeddedObjects.
  • 62. 62 Tip #24: Recycle, recycle, recycle §  Running a NSD gives you insights of the currently used backend handles. §  If you‘re still on 8.5.2 => Upgrade!
  • 63. 63 Tip #25: Exceptions are not for control-flow §  Use Exceptions for stuff you can recover and for unexpected conditions.
  • 64. 64 Tip #25: Exceptions are not for control-flow
  • 65. 65 Tip #25: Exceptions are not for control-flow
  • 66. 66 Tip #26: Typed vs. Un-Typed Collections §  Typed collections make your life much more easier. §  You see in the code what type it is. §  No need for casting §  Easier for looping (instead of using an iterator)
  • 67. 67 Tip #26: Typed vs. Un-Typed Collections
  • 68. 68 Tip #26: Typed vs. Un-Typed Collections
  • 69. 69 Tip #27: Don’t concatenate too much §  Even if it‘s convenient – try to avoid „too much“ method concatenation. §  Makes your life a lot easier, especially during development and debugging.
  • 71. 71 Tip #28: Accessible fields §  Fields should always be private except for constants §  Accessible fields cause tight coupling §  They are corruptible §  If a field needs to be accessed => use „Getter“ and „Setter“
  • 73. 73 Tip #29: Keep code clean §  Delete not-needed / „out-commented“ code §  Your SCM takes care of the history.