diff --git a/ant/org.eclipse.ant.launching/remote/org/eclipse/ant/internal/launching/remote/logger/RemoteAntBuildLogger.java b/ant/org.eclipse.ant.launching/remote/org/eclipse/ant/internal/launching/remote/logger/RemoteAntBuildLogger.java
index 10dc159..f6cec99 100644
--- a/ant/org.eclipse.ant.launching/remote/org/eclipse/ant/internal/launching/remote/logger/RemoteAntBuildLogger.java
+++ b/ant/org.eclipse.ant.launching/remote/org/eclipse/ant/internal/launching/remote/logger/RemoteAntBuildLogger.java
@@ -287,9 +287,9 @@
 		try {
 			BufferedReader r = new BufferedReader(new StringReader(message));
 			String line = r.readLine();
-			StringBuffer messageLine;
+			StringBuilder messageLine;
 			while (line != null) {
-				messageLine = new StringBuffer();
+				messageLine = new StringBuilder();
 				if (priority != -1) {
 					messageLine.append(priority);
 					messageLine.append(',');
@@ -311,7 +311,7 @@
 		}
 		BufferedReader r = new BufferedReader(new StringReader(eventMessage));
 		String line = r.readLine();
-		StringBuffer message;
+		StringBuilder message;
 		String taskName = event.getTask().getTaskName();
 		if (taskName != null && taskName.equals(fLastTaskName)) {
 			taskName = IAntCoreConstants.EMPTY_STRING;
@@ -335,7 +335,7 @@
 		}
 		int priority = event.getPriority();
 		while (line != null) {
-			message = new StringBuffer(MessageIds.TASK);
+			message = new StringBuilder(MessageIds.TASK);
 			message.append(priority);
 			message.append(',');
 			message.append(taskName);
diff --git a/ant/org.eclipse.ant.launching/src/org/eclipse/ant/internal/launching/debug/model/AntThread.java b/ant/org.eclipse.ant.launching/src/org/eclipse/ant/internal/launching/debug/model/AntThread.java
index c07427e..3925776 100644
--- a/ant/org.eclipse.ant.launching/src/org/eclipse/ant/internal/launching/debug/model/AntThread.java
+++ b/ant/org.eclipse.ant.launching/src/org/eclipse/ant/internal/launching/debug/model/AntThread.java
@@ -291,21 +291,21 @@
 			if (fOldFrames != null && (strings.length - 1) / 4 != fOldFrames.size()) {
 				fOldFrames = null; // stack size changed..do not preserve
 			}
-			StringBuffer name;
+			StringBuilder name;
 			String filePath;
 			int lineNumber;
 			int stackFrameId = 0;
 			String taskName;
 			for (int i = 1; i < strings.length; i++) {
 				if (strings[i].length() > 0) {
-					name = new StringBuffer(strings[i]);
+					name = new StringBuilder(strings[i]);
 					taskName = strings[++i];
 					if (taskName.length() > 0) {
 						name.append(": "); //$NON-NLS-1$
 						name.append(taskName);
 					}
 				} else {
-					name = new StringBuffer(strings[++i]);
+					name = new StringBuilder(strings[++i]);
 				}
 				filePath = strings[++i];
 				lineNumber = Integer.parseInt(strings[++i]);
diff --git a/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/formatter/XmlDocumentFormatter.java b/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/formatter/XmlDocumentFormatter.java
index 839bb5e..a9ea122 100644
--- a/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/formatter/XmlDocumentFormatter.java
+++ b/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/formatter/XmlDocumentFormatter.java
@@ -226,7 +226,7 @@
 		@Override
 		protected String readTag() throws IOException {
 
-			StringBuffer node = new StringBuffer();
+			StringBuilder node = new StringBuilder();
 
 			while (!complete) {
 
@@ -251,7 +251,7 @@
 
 			} else if (node.toString().trim().length() == 0) {
 				String whitespace = node.toString();
-				node = new StringBuffer();
+				node = new StringBuilder();
 				for (int i = 0; i < whitespace.length(); i++) {
 					char whitespaceCharacter = whitespace.charAt(i);
 					if (whitespaceCharacter == '\n' || whitespaceCharacter == '\r') {
diff --git a/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/formatter/XmlTagFormatter.java b/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/formatter/XmlTagFormatter.java
index f27ea9e..052fd2f 100644
--- a/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/formatter/XmlTagFormatter.java
+++ b/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/formatter/XmlTagFormatter.java
@@ -285,8 +285,8 @@
 			Mode mode = new Mode();
 			mode.setAttributeNameSearching();
 			char attributeQuote = '"';
-			StringBuffer currentAttributeName = null;
-			StringBuffer currentAttributeValue = null;
+			StringBuilder currentAttributeName = null;
+			StringBuilder currentAttributeValue = null;
 
 			char c = iter.first();
 			while (iter.getIndex() < iter.getEndIndex()) {
@@ -301,7 +301,7 @@
 							// start of an attribute value
 							attributeQuote = c;
 							mode.setAttributeValueFound();
-							currentAttributeValue = new StringBuffer(1024);
+							currentAttributeValue = new StringBuilder(1024);
 
 						} else if (mode.isAttributeValueFound() && attributeQuote == c) {
 
@@ -376,7 +376,7 @@
 								if (mode.isAttributeNameSearching()) {
 									// we found the start of an attribute name
 									mode.setAttributeNameFound();
-									currentAttributeName = new StringBuffer(255);
+									currentAttributeName = new StringBuilder(255);
 									currentAttributeName.append(c);
 								} else if (mode.isAttributeNameFound()) {
 									currentAttributeName.append(c);
