diff --git a/org.eclipse.pde.build.tests/src/org/eclipse/pde/build/internal/tests/Utils.java b/org.eclipse.pde.build.tests/src/org/eclipse/pde/build/internal/tests/Utils.java
index c885252..b5dfc42 100644
--- a/org.eclipse.pde.build.tests/src/org/eclipse/pde/build/internal/tests/Utils.java
+++ b/org.eclipse.pde.build.tests/src/org/eclipse/pde/build/internal/tests/Utils.java
@@ -235,7 +235,7 @@
 			buffer.append("\"");
 		}
 		buffer.append(" useFeatures=\"");
-		buffer.append(new Boolean(features).toString());
+		buffer.append(Boolean.valueOf(features).toString());
 		buffer.append("\">\n");
 		buffer.append("  <configIni use=\"default\"/>\n");
 		buffer.append("  <launcher name=\"" + (launcher != null ? launcher : "eclipse") + "\"/>\n");
diff --git a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/AbstractScriptGenerator.java b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/AbstractScriptGenerator.java
index d1ccfa6..d0ab963 100644
--- a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/AbstractScriptGenerator.java
+++ b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/AbstractScriptGenerator.java
@@ -688,7 +688,7 @@
 			return null;
 
 		Map<String, Object> results = new HashMap<>();
-		results.put(PROFILE_TIMESTAMP, new Long(-1));
+		results.put(PROFILE_TIMESTAMP, Long.valueOf(-1));
 
 		String profileId = null;
 		if (target.isFile()) {
@@ -701,7 +701,7 @@
 			if (idx > 0) {
 				timestamp = timestamp.substring(0, idx);
 				try {
-					results.put(PROFILE_TIMESTAMP, new Long(timestamp));
+					results.put(PROFILE_TIMESTAMP, Long.valueOf(timestamp));
 				} catch (NumberFormatException e) {
 					//not a timestamp?
 				}
diff --git a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/AntLogAdapter.java b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/AntLogAdapter.java
index ba1c1cb..d22ad74 100644
--- a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/AntLogAdapter.java
+++ b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/AntLogAdapter.java
@@ -48,9 +48,9 @@
 			String statusMessage = status.getMessage();
 			String exceptionMessage = status.getException() != null ? status.getException().getMessage() : null;
 
-			log.invoke(antLog, new Object[] {statusMessage, new Integer(mapLogLevels(status.getSeverity()))});
+			log.invoke(antLog, new Object[] {statusMessage, Integer.valueOf(mapLogLevels(status.getSeverity()))});
 			if (exceptionMessage != null && !exceptionMessage.equals(statusMessage))
-				log.invoke(antLog, new Object[] {exceptionMessage, new Integer(mapLogLevels(status.getSeverity()))});
+				log.invoke(antLog, new Object[] {exceptionMessage, Integer.valueOf(mapLogLevels(status.getSeverity()))});
 			IStatus[] nestedStatus = status.getChildren();
 			if (nestedStatus != null) {
 				for (int i = 0; i < nestedStatus.length; i++) {
diff --git a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/FeatureGenerator.java b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/FeatureGenerator.java
index 597deda..0b2adb2 100644
--- a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/FeatureGenerator.java
+++ b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/FeatureGenerator.java
@@ -401,7 +401,7 @@
 							Filter filter = helper.getFilter(bundle);
 							if (filter == null || filter.match(environment)) {
 								writeBundle = true;
-								guessedUnpack = Utils.guessUnpack(bundle, state.getExtraData().get(new Long(bundle.getBundleId())));
+								guessedUnpack = Utils.guessUnpack(bundle, state.getExtraData().get(Long.valueOf(bundle.getBundleId())));
 								if (currentConfig.equals(Config.genericConfig())) {
 									listIter.remove();
 								}
diff --git a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ClasspathComputer3_0.java b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ClasspathComputer3_0.java
index 92b651b..8dfac14 100644
--- a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ClasspathComputer3_0.java
+++ b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ClasspathComputer3_0.java
@@ -227,13 +227,13 @@
 	 */
 	private void addPlugin(BundleDescription plugin, List<Object> classpath, String location) throws CoreException {
 		boolean allFragments = true;
-		String patchInfo = generator.getSite(false).getRegistry().getPatchData().get(new Long(plugin.getBundleId()));
+		String patchInfo = generator.getSite(false).getRegistry().getPatchData().get(Long.valueOf(plugin.getBundleId()));
 		if (patchInfo != null && plugin != generator.getModel()) {
 			addFragmentsLibraries(plugin, classpath, location, false, false);
 			allFragments = false;
 		}
 
-		requiredIds.add(new Long(plugin.getBundleId()));
+		requiredIds.add(Long.valueOf(plugin.getBundleId()));
 
 		addRuntimeLibraries(plugin, classpath, location);
 		addFragmentsLibraries(plugin, classpath, location, true, allFragments);
@@ -278,7 +278,7 @@
 			if (matchFilter(fragments[i]) == false)
 				continue;
 
-			requiredIds.add(new Long(fragments[i].getBundleId()));
+			requiredIds.add(Long.valueOf(fragments[i].getBundleId()));
 
 			if (!afterPlugin && isPatchFragment(fragments[i])) {
 				addPluginLibrariesToFragmentLocations(plugin, fragments[i], classpath, baseLocation);
@@ -294,7 +294,7 @@
 	}
 
 	private boolean isPatchFragment(BundleDescription fragment) throws CoreException {
-		return generator.getSite(false).getRegistry().getPatchData().get(new Long(fragment.getBundleId())) != null;
+		return generator.getSite(false).getRegistry().getPatchData().get(Long.valueOf(fragment.getBundleId())) != null;
 	}
 
 	/**
diff --git a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/CompilationScriptGenerator.java b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/CompilationScriptGenerator.java
index 16e668c..8948ed5 100644
--- a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/CompilationScriptGenerator.java
+++ b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/CompilationScriptGenerator.java
@@ -108,7 +108,7 @@
 					script.printParallel(threadCount, threadsPerProcessor);
 					bucket.clear();
 				}
-				bucket.add(new Long(bundle.getBundleId()));
+				bucket.add(Long.valueOf(bundle.getBundleId()));
 			}
 
 			IPath location = Utils.makeRelative(new Path(getLocation(bundle)), basePath);
@@ -127,7 +127,7 @@
 				String[] ids = Utils.getArrayFromString(required, ":"); //$NON-NLS-1$
 				for (int i = 0; i < ids.length; i++) {
 					try {
-						if (bucket.contains(new Long(ids[i]))) {
+						if (bucket.contains(Long.valueOf(ids[i]))) {
 							return true;
 						}
 					} catch (NumberFormatException e) {
diff --git a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ModelBuildScriptGenerator.java b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ModelBuildScriptGenerator.java
index 72afcf1..5e44360 100644
--- a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ModelBuildScriptGenerator.java
+++ b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ModelBuildScriptGenerator.java
@@ -1319,7 +1319,7 @@
 				String[] ids = Utils.getArrayFromString(required, ":"); //$NON-NLS-1$
 				for (int i = 0; i < ids.length; i++) {
 					try {
-						BundleDescription bundle = state.getBundle(new Long(ids[i]).longValue());
+						BundleDescription bundle = state.getBundle(Long.valueOf(ids[i]).longValue());
 						if (bundle != null && !Utils.isBinary(bundle)) {
 							Path bundleLocation = new Path(bundle.getLocation());
 							results.add(bundleLocation.append("compilation.problem")); //$NON-NLS-1$
@@ -1820,7 +1820,7 @@
 	}
 
 	protected String[] getClasspathEntries(BundleDescription lookedUpModel) throws CoreException {
-		return getSite(false).getRegistry().getExtraData().get(new Long(lookedUpModel.getBundleId()));
+		return getSite(false).getRegistry().getExtraData().get(Long.valueOf(lookedUpModel.getBundleId()));
 	}
 
 	@Override
diff --git a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/PDEState.java b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/PDEState.java
index 54c9810..d48bf56 100644
--- a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/PDEState.java
+++ b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/PDEState.java
@@ -90,10 +90,10 @@
 		try {
 			BundleDescription descriptor;
 			descriptor = factory.createBundleDescription(state, enhancedManifest, bundleLocation.getAbsolutePath(), getNextId());
-			bundleClasspaths.put(new Long(descriptor.getBundleId()), BundleHelper.getClasspath(enhancedManifest));
+			bundleClasspaths.put(Long.valueOf(descriptor.getBundleId()), BundleHelper.getClasspath(enhancedManifest));
 			String patchValue = fillPatchData(enhancedManifest);
 			if (patchValue != null)
-				patchBundles.put(new Long(descriptor.getBundleId()), patchValue);
+				patchBundles.put(Long.valueOf(descriptor.getBundleId()), patchValue);
 			rememberQualifierTagPresence(descriptor);
 			rememberManifestConversion(descriptor, enhancedManifest);
 			rememberManifestEntries(descriptor, enhancedManifest, MANIFEST_ENTRIES);
