diff --git a/bundles/org.eclipse.osgi.compatibility.state/src/org/eclipse/osgi/internal/resolver/StateHelperImpl.java b/bundles/org.eclipse.osgi.compatibility.state/src/org/eclipse/osgi/internal/resolver/StateHelperImpl.java
index 8d75473..29f4e2b 100644
--- a/bundles/org.eclipse.osgi.compatibility.state/src/org/eclipse/osgi/internal/resolver/StateHelperImpl.java
+++ b/bundles/org.eclipse.osgi.compatibility.state/src/org/eclipse/osgi/internal/resolver/StateHelperImpl.java
@@ -620,7 +620,7 @@
 		// Get the visibility of all directly required bundles
 		for (int i = 0; i < required.length; i++) {
 			if (required[i].getSupplier() != null) {
-				resolvedBundlesExported.put((BundleDescription) required[i].getSupplier(), new Boolean(required[i].isExported()));
+				resolvedBundlesExported.put((BundleDescription) required[i].getSupplier(), Boolean.valueOf(required[i].isExported()));
 				resolved.remove(required[i].getSupplier());
 			}
 		}
@@ -633,7 +633,7 @@
 				BundleSpecification[] fragmentRequiredBundles = fragments[i].getRequiredBundles();
 				for (int j = 0; j < fragmentRequiredBundles.length; j++) {
 					if (resolved.contains(fragmentRequiredBundles[j].getSupplier())) {
-						resolvedBundlesExported.put((BundleDescription) fragmentRequiredBundles[j].getSupplier(), new Boolean(fragmentRequiredBundles[j].isExported()));
+						resolvedBundlesExported.put((BundleDescription) fragmentRequiredBundles[j].getSupplier(), Boolean.valueOf(fragmentRequiredBundles[j].isExported()));
 						resolved.remove(fragmentRequiredBundles[j].getSupplier());
 					}
 				}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.b/ext/framework/b/TestCondition.java b/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.b/ext/framework/b/TestCondition.java
index 3ea5acb..ee640e9 100644
--- a/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.b/ext/framework/b/TestCondition.java
+++ b/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.b/ext/framework/b/TestCondition.java
@@ -87,7 +87,7 @@
 		for (int i = 0; i < conditions.length; i++) {
 			Boolean isSatisfied = (Boolean) context.get(conditions[i]);
 			if (isSatisfied == null) {
-				isSatisfied = new Boolean(conditions[i].isSatisfied());
+				isSatisfied = Boolean.valueOf(conditions[i].isSatisfied());
 				context.put(conditions[i], isSatisfied);
 			}
 			if (!isSatisfied.booleanValue())
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/appadmin/ApplicationAdminTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/appadmin/ApplicationAdminTest.java
index 63d84b7..d5f6811 100644
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/appadmin/ApplicationAdminTest.java
+++ b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/appadmin/ApplicationAdminTest.java
@@ -164,7 +164,7 @@
 		list.add(new Byte((byte) 0));
 		list.add(new Short((short) 1));
 		list.add(new Character((char) 0));
-		list.add(new Boolean(true));
+		list.add(Boolean.TRUE);
 		doInvalidScheduleArgs(app, "schedule.testargs", args, "org/osgi/application/timer", "(minute=*)", true, false, false); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 
 		args.put("test.arg5", new String[0]); //$NON-NLS-1$
@@ -186,7 +186,7 @@
 		args.put("test.arg18", new Byte((byte) 0)); //$NON-NLS-1$
 		args.put("test.arg19", new Short((short) 1)); //$NON-NLS-1$
 		args.put("test.arg20", new Character((char) 0)); //$NON-NLS-1$
-		args.put("test.arg21", new Boolean(true)); //$NON-NLS-1$
+		args.put("test.arg21", Boolean.TRUE); //$NON-NLS-1$
 		doInvalidScheduleArgs(app, "schedule.testargs", args, "org/osgi/application/timer", "(minute=*)", true, false, false); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 
 		Map testMap = new HashMap();
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/filter/FilterTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/filter/FilterTests.java
index e2ca740..95d4d56 100644
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/filter/FilterTests.java
+++ b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/filter/FilterTests.java
@@ -59,7 +59,7 @@
 		props.put("floatvalue", new Float(1.01));
 		props.put("doublevalue", new Double(2.01));
 		props.put("charvalue", new Character('A'));
-		props.put("booleanvalue", new Boolean(true));
+		props.put("booleanvalue", Boolean.TRUE);
 		props.put("weirdvalue", new Hashtable());
 		props.put("primintarrayvalue", new int[] {1, 2, 3});
 		props.put("primlongarrayvalue", new long[] {1, 2, 3});
