Only create the beak iterators when needed.
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/DefaultTextDoubleClickStrategy.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/DefaultTextDoubleClickStrategy.java
index 5dd1c44..46c37dc 100644
--- a/org.eclipse.jface.text/src/org/eclipse/jface/text/DefaultTextDoubleClickStrategy.java
+++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/DefaultTextDoubleClickStrategy.java
@@ -172,7 +172,7 @@
 	 * The locale specific word break iterator.
 	 * @since 3.7
 	 */
-	private BreakIterator fWordBreakIterator= BreakIterator.getWordInstance();
+	private BreakIterator fWordBreakIterator;
 
 	/**
 	 * The POSIX word break iterator.
@@ -183,14 +183,13 @@
 	 * 
 	 * @since 3.7
 	 */
-	private BreakIterator fPosixWordBreakIterator= BreakIterator.getWordInstance(new Locale("en", "US", "POSIX")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+	private BreakIterator fPOSIXWordBreakIterator;
 
 
 	/**
 	 * Creates a new default text double click strategy.
 	 */
 	public DefaultTextDoubleClickStrategy() {
-		super();
 	}
 
 	/*
@@ -237,7 +236,36 @@
 	 * @since 3.5
 	 */
 	protected IRegion findWord(IDocument document, int offset) {
-		return findWord(document, offset, fWordBreakIterator);
+		return findWord(document, offset, getWordBreakIterator());
+	}
+
+	/**
+	 * Returns the locale specific word break iterator.
+	 * 
+	 * @return the locale specific word break iterator
+	 * @since 3.7
+	 */
+	private BreakIterator getWordBreakIterator() {
+		if (fWordBreakIterator == null)
+			fWordBreakIterator= BreakIterator.getWordInstance();
+		return fWordBreakIterator;
+	}
+
+	/**
+	 * Returns the POSIX word break iterator.
+	 * 
+	 * <p>
+	 * Used to workaround ICU bug not treating '.' as word boundary, see
+	 * http://bugs.icu-project.org/trac/ticket/8371 for details.
+	 * </p>
+	 * 
+	 * @return the POSIX word break iterator.
+	 * @since 3.7
+	 */
+	private BreakIterator getPOSIXWordBreakIterator() {
+		if (fPOSIXWordBreakIterator == null)
+			fPOSIXWordBreakIterator= BreakIterator.getWordInstance(new Locale("en", "US", "POSIX")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		return fPOSIXWordBreakIterator;
 	}
 
 	/**
@@ -285,8 +313,8 @@
 		int length= end - start;
 		try {
 			// Workaround for ICU bug not treating '.' as word boundary, see http://bugs.icu-project.org/trac/ticket/8371 for details.
-			if (fPosixWordBreakIterator != wordBreakIterator && document.get(start, length).indexOf('.') != -1) {
-				IRegion wordRegion= findWord(document, offset, fPosixWordBreakIterator);
+			if (fPOSIXWordBreakIterator != wordBreakIterator && document.get(start, length).indexOf('.') != -1) {
+				IRegion wordRegion= findWord(document, offset, getPOSIXWordBreakIterator());
 				if (wordRegion != null) {
 					int wordStart= wordRegion.getOffset();
 					int wordEnd= wordStart + wordRegion.getLength();