Merge
authormullan
Mon, 23 Jan 2017 07:36:05 -0500
changeset 43246 253001fa0f60
parent 43245 bc7dea80c4d0 (current diff)
parent 43244 7324550409ac (diff)
child 43247 8d242299a219
Merge
jdk/src/java.base/share/classes/sun/security/util/AuthResourcesProvider.java
jdk/src/java.base/share/classes/sun/security/util/AuthResourcesProviderImpl.java
jdk/src/linux/doc/man/ja/jvisualvm.1
jdk/src/linux/doc/man/jvisualvm.1
jdk/src/solaris/doc/sun/man/man1/ja/jvisualvm.1
jdk/src/solaris/doc/sun/man/man1/jvisualvm.1
--- a/jdk/src/java.base/share/classes/module-info.java	Mon Jan 23 07:34:11 2017 -0500
+++ b/jdk/src/java.base/share/classes/module-info.java	Mon Jan 23 07:36:05 2017 -0500
@@ -310,7 +310,6 @@
     // JDK-internal service types
     uses jdk.internal.logger.DefaultLoggerFinder;
     uses sun.security.ssl.ClientKeyExchangeService;
-    uses sun.security.util.AuthResourcesProvider;
     uses sun.text.spi.JavaTimeDateTimePatternProvider;
     uses sun.util.spi.CalendarProvider;
     uses sun.util.locale.provider.LocaleDataMetaInfo;
@@ -322,6 +321,4 @@
 
     provides java.nio.file.spi.FileSystemProvider with
         jdk.internal.jrtfs.JrtFileSystemProvider;
-    provides sun.security.util.AuthResourcesProvider with
-        sun.security.util.AuthResourcesProviderImpl;
 }
--- a/jdk/src/java.base/share/classes/sun/security/provider/ConfigFile.java	Mon Jan 23 07:34:11 2017 -0500
+++ b/jdk/src/java.base/share/classes/sun/security/provider/ConfigFile.java	Mon Jan 23 07:36:05 2017 -0500
@@ -331,9 +331,8 @@
                 if (debugConfig != null) {
                     debugConfig.println(fnfe.toString());
                 }
-                throw new IOException(ResourcesMgr.getString
-                    ("Configuration.Error.No.such.file.or.directory",
-                    "sun.security.util.AuthResources"));
+                throw new IOException(ResourcesMgr.getAuthResourceString
+                    ("Configuration.Error.No.such.file.or.directory"));
             }
         }
 
@@ -661,8 +660,8 @@
         }
 
         private IOException ioException(String resourceKey, Object... args) {
-            MessageFormat form = new MessageFormat(ResourcesMgr.getString
-                (resourceKey, "sun.security.util.AuthResources"));
+            MessageFormat form = new MessageFormat(
+                ResourcesMgr.getAuthResourceString(resourceKey));
             return new IOException(form.format(args));
         }
     }
--- a/jdk/src/java.base/share/classes/sun/security/provider/SubjectCodeSource.java	Mon Jan 23 07:34:11 2017 -0500
+++ b/jdk/src/java.base/share/classes/sun/security/provider/SubjectCodeSource.java	Mon Jan 23 07:36:05 2017 -0500
@@ -34,6 +34,7 @@
 
 import javax.security.auth.Subject;
 import sun.security.provider.PolicyParser.PrincipalEntry;
+import sun.security.util.ResourcesMgr;
 
 /**
  * <p> This <code>SubjectCodeSource</code> class contains
@@ -47,15 +48,6 @@
 
     private static final long serialVersionUID = 6039418085604715275L;
 
-    private static final java.util.ResourceBundle rb =
-        java.security.AccessController.doPrivileged
-        (new java.security.PrivilegedAction<java.util.ResourceBundle>() {
-            public java.util.ResourceBundle run() {
-                return (java.util.ResourceBundle.getBundle
-                        ("sun.security.util.AuthResources"));
-            }
-        });
-
     private Subject subject;
     private LinkedList<PrincipalEntry> principals;
     private static final Class<?>[] PARAMS = { String.class };
@@ -391,7 +383,7 @@
             ListIterator<PrincipalEntry> li = principals.listIterator();
             while (li.hasNext()) {
                 PrincipalEntry pppe = li.next();
-                returnMe = returnMe + rb.getString("NEWLINE") +
+                returnMe = returnMe + ResourcesMgr.getAuthResourceString("NEWLINE") +
                         pppe.getPrincipalClass() + " " +
                         pppe.getPrincipalName();
             }
--- a/jdk/src/java.base/share/classes/sun/security/util/AuthResourcesProvider.java	Mon Jan 23 07:34:11 2017 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package sun.security.util;
-
-public interface AuthResourcesProvider extends java.util.spi.ResourceBundleProvider {
-}
--- a/jdk/src/java.base/share/classes/sun/security/util/AuthResourcesProviderImpl.java	Mon Jan 23 07:34:11 2017 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package sun.security.util;
-
-import java.util.spi.AbstractResourceBundleProvider;
-
-public final class AuthResourcesProviderImpl extends AbstractResourceBundleProvider
-       implements AuthResourcesProvider {
-    public AuthResourcesProviderImpl() {
-        super("java.class");
-    }
-}
\ No newline at end of file
--- a/jdk/src/java.base/share/classes/sun/security/util/ResourcesMgr.java	Mon Jan 23 07:34:11 2017 -0500
+++ b/jdk/src/java.base/share/classes/sun/security/util/ResourcesMgr.java	Mon Jan 23 07:36:05 2017 -0500
@@ -25,18 +25,22 @@
 
 package sun.security.util;
 
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.concurrent.ConcurrentHashMap;
+import jdk.internal.misc.VM;
+
 /**
  */
 public class ResourcesMgr {
+    // intended for java.security, javax.security and sun.security resources
+    private final static String RESOURCES = "sun.security.util.Resources";
+    private final static String AUTH_RESOURCES = "sun.security.util.AuthResources";
 
-    // intended for java.security, javax.security and sun.security resources
-    private static java.util.ResourceBundle bundle;
-
-    // intended for com.sun.security resources
-    private static java.util.ResourceBundle altBundle;
+    private final static Map<String, ResourceBundle> bundles = new ConcurrentHashMap<>();
 
     public static String getString(String s) {
-
+        ResourceBundle bundle = bundles.get(RESOURCES);
         if (bundle == null) {
 
             // only load if/when needed
@@ -52,19 +56,15 @@
         return bundle.getString(s);
     }
 
-    public static String getString(String s, final String altBundleName) {
-
-        if (altBundle == null) {
-
-            // only load if/when needed
-            altBundle = java.security.AccessController.doPrivileged(
-                new java.security.PrivilegedAction<java.util.ResourceBundle>() {
-                public java.util.ResourceBundle run() {
-                    return (java.util.ResourceBundle.getBundle(altBundleName));
-                }
-            });
+    public static String getAuthResourceString(String s) {
+        if (VM.initLevel() == 3) {
+            // cannot trigger loading of any resource bundle as
+            // it depends on the system class loader fully initialized.
+            throw new InternalError("system class loader is being initialized");
         }
 
-        return altBundle.getString(s);
+        return bundles.computeIfAbsent(AUTH_RESOURCES, ResourceBundle::getBundle)
+                      .getString(s);
     }
+
 }
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTDomainPrincipal.java	Mon Jan 23 07:34:11 2017 -0500
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTDomainPrincipal.java	Mon Jan 23 07:36:05 2017 -0500
@@ -65,9 +65,8 @@
     public NTDomainPrincipal(String name) {
         if (name == null) {
             java.text.MessageFormat form = new java.text.MessageFormat
-                (sun.security.util.ResourcesMgr.getString
-                        ("invalid.null.input.value",
-                        "sun.security.util.AuthResources"));
+                (sun.security.util.ResourcesMgr.getAuthResourceString
+                        ("invalid.null.input.value"));
             Object[] source = {"name"};
             throw new NullPointerException(form.format(source));
         }
@@ -92,9 +91,8 @@
      */
     public String toString() {
         java.text.MessageFormat form = new java.text.MessageFormat
-                (sun.security.util.ResourcesMgr.getString
-                        ("NTDomainPrincipal.name",
-                        "sun.security.util.AuthResources"));
+                (sun.security.util.ResourcesMgr.getAuthResourceString
+                        ("NTDomainPrincipal.name"));
         Object[] source = {name};
         return form.format(source);
     }
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTNumericCredential.java	Mon Jan 23 07:34:11 2017 -0500
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTNumericCredential.java	Mon Jan 23 07:36:05 2017 -0500
@@ -61,9 +61,8 @@
      */
     public String toString() {
         java.text.MessageFormat form = new java.text.MessageFormat
-                (sun.security.util.ResourcesMgr.getString
-                        ("NTNumericCredential.name",
-                        "sun.security.util.AuthResources"));
+                (sun.security.util.ResourcesMgr.getAuthResourceString
+                        ("NTNumericCredential.name"));
         Object[] source = {Long.toString(impersonationToken)};
         return form.format(source);
     }
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSid.java	Mon Jan 23 07:34:11 2017 -0500
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSid.java	Mon Jan 23 07:36:05 2017 -0500
@@ -70,17 +70,15 @@
     public NTSid (String stringSid) {
         if (stringSid == null) {
             java.text.MessageFormat form = new java.text.MessageFormat
-                (sun.security.util.ResourcesMgr.getString
-                        ("invalid.null.input.value",
-                        "sun.security.util.AuthResources"));
+                (sun.security.util.ResourcesMgr.getAuthResourceString
+                        ("invalid.null.input.value"));
             Object[] source = {"stringSid"};
             throw new NullPointerException(form.format(source));
         }
         if (stringSid.length() == 0) {
             throw new IllegalArgumentException
-                (sun.security.util.ResourcesMgr.getString
-                        ("Invalid.NTSid.value",
-                        "sun.security.util.AuthResources"));
+                (sun.security.util.ResourcesMgr.getAuthResourceString
+                        ("Invalid.NTSid.value"));
         }
         sid = new String(stringSid);
     }
@@ -101,9 +99,8 @@
      */
     public String toString() {
         java.text.MessageFormat form = new java.text.MessageFormat
-                (sun.security.util.ResourcesMgr.getString
-                        ("NTSid.name",
-                        "sun.security.util.AuthResources"));
+                (sun.security.util.ResourcesMgr.getAuthResourceString
+                        ("NTSid.name"));
         Object[] source = {sid};
         return form.format(source);
     }
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSidDomainPrincipal.java	Mon Jan 23 07:34:11 2017 -0500
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSidDomainPrincipal.java	Mon Jan 23 07:36:05 2017 -0500
@@ -68,9 +68,8 @@
      */
     public String toString() {
         java.text.MessageFormat form = new java.text.MessageFormat
-                (sun.security.util.ResourcesMgr.getString
-                        ("NTSidDomainPrincipal.name",
-                        "sun.security.util.AuthResources"));
+                (sun.security.util.ResourcesMgr.getAuthResourceString
+                        ("NTSidDomainPrincipal.name"));
         Object[] source = {getName()};
         return form.format(source);
     }
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSidGroupPrincipal.java	Mon Jan 23 07:34:11 2017 -0500
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSidGroupPrincipal.java	Mon Jan 23 07:36:05 2017 -0500
@@ -63,9 +63,8 @@
      */
     public String toString() {
         java.text.MessageFormat form = new java.text.MessageFormat
-                (sun.security.util.ResourcesMgr.getString
-                        ("NTSidGroupPrincipal.name",
-                        "sun.security.util.AuthResources"));
+                (sun.security.util.ResourcesMgr.getAuthResourceString
+                        ("NTSidGroupPrincipal.name"));
         Object[] source = {getName()};
         return form.format(source);
     }
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSidPrimaryGroupPrincipal.java	Mon Jan 23 07:34:11 2017 -0500
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSidPrimaryGroupPrincipal.java	Mon Jan 23 07:36:05 2017 -0500
@@ -65,9 +65,8 @@
      */
     public String toString() {
         java.text.MessageFormat form = new java.text.MessageFormat
-                (sun.security.util.ResourcesMgr.getString
-                        ("NTSidPrimaryGroupPrincipal.name",
-                        "sun.security.util.AuthResources"));
+                (sun.security.util.ResourcesMgr.getAuthResourceString
+                        ("NTSidPrimaryGroupPrincipal.name"));
         Object[] source = {getName()};
         return form.format(source);
     }
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSidUserPrincipal.java	Mon Jan 23 07:34:11 2017 -0500
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSidUserPrincipal.java	Mon Jan 23 07:36:05 2017 -0500
@@ -62,9 +62,8 @@
      */
     public String toString() {
         java.text.MessageFormat form = new java.text.MessageFormat
-                (sun.security.util.ResourcesMgr.getString
-                        ("NTSidUserPrincipal.name",
-                        "sun.security.util.AuthResources"));
+                (sun.security.util.ResourcesMgr.getAuthResourceString
+                        ("NTSidUserPrincipal.name"));
         Object[] source = {getName()};
         return form.format(source);
     }
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTUserPrincipal.java	Mon Jan 23 07:34:11 2017 -0500
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTUserPrincipal.java	Mon Jan 23 07:36:05 2017 -0500
@@ -61,9 +61,8 @@
     public NTUserPrincipal(String name) {
         if (name == null) {
             java.text.MessageFormat form = new java.text.MessageFormat
-                (sun.security.util.ResourcesMgr.getString
-                        ("invalid.null.input.value",
-                        "sun.security.util.AuthResources"));
+                (sun.security.util.ResourcesMgr.getAuthResourceString
+                        ("invalid.null.input.value"));
             Object[] source = {"name"};
             throw new NullPointerException(form.format(source));
         }
@@ -86,9 +85,8 @@
      */
     public String toString() {
         java.text.MessageFormat form = new java.text.MessageFormat
-                (sun.security.util.ResourcesMgr.getString
-                        ("NTUserPrincipal.name",
-                        "sun.security.util.AuthResources"));
+                (sun.security.util.ResourcesMgr.getAuthResourceString
+                        ("NTUserPrincipal.name"));
         Object[] source = {name};
         return form.format(source);
     }
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/SolarisNumericGroupPrincipal.java	Mon Jan 23 07:34:11 2017 -0500
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/SolarisNumericGroupPrincipal.java	Mon Jan 23 07:36:05 2017 -0500
@@ -26,6 +26,7 @@
 package com.sun.security.auth;
 
 import java.security.Principal;
+import static sun.security.util.ResourcesMgr.getAuthResourceString;
 
 /**
  * This class implements the {@code Principal} interface
@@ -53,9 +54,6 @@
 
     private static final long serialVersionUID = 2345199581042573224L;
 
-    private static final java.util.ResourceBundle rb =
-        java.util.ResourceBundle.getBundle("sun.security.util.AuthResources");
-
     /**
      * @serial
      */
@@ -82,7 +80,7 @@
      */
     public SolarisNumericGroupPrincipal(String name, boolean primaryGroup) {
         if (name == null)
-            throw new NullPointerException(rb.getString("provided.null.name"));
+            throw new NullPointerException(getAuthResourceString("provided.null.name"));
 
         this.name = name;
         this.primaryGroup = primaryGroup;
@@ -146,11 +144,11 @@
      *          {@code SolarisNumericGroupPrincipal}.
      */
     public String toString() {
-        return((primaryGroup ?
-            rb.getString
+        return primaryGroup ?
+            getAuthResourceString
             ("SolarisNumericGroupPrincipal.Primary.Group.") + name :
-            rb.getString
-            ("SolarisNumericGroupPrincipal.Supplementary.Group.") + name));
+            getAuthResourceString
+            ("SolarisNumericGroupPrincipal.Supplementary.Group.") + name;
     }
 
     /**
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/SolarisNumericUserPrincipal.java	Mon Jan 23 07:34:11 2017 -0500
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/SolarisNumericUserPrincipal.java	Mon Jan 23 07:36:05 2017 -0500
@@ -26,6 +26,7 @@
 package com.sun.security.auth;
 
 import java.security.Principal;
+import static sun.security.util.ResourcesMgr.getAuthResourceString;
 
 /**
  * This class implements the {@code Principal} interface
@@ -52,9 +53,6 @@
 
     private static final long serialVersionUID = -3178578484679887104L;
 
-    private static final java.util.ResourceBundle rb =
-        java.util.ResourceBundle.getBundle("sun.security.util.AuthResources");
-
     /**
      * @serial
      */
@@ -72,7 +70,7 @@
      */
     public SolarisNumericUserPrincipal(String name) {
         if (name == null)
-            throw new NullPointerException(rb.getString("provided.null.name"));
+            throw new NullPointerException(getAuthResourceString("provided.null.name"));
 
         this.name = name;
     }
@@ -118,7 +116,7 @@
      *          {@code SolarisNumericUserPrincipal}.
      */
     public String toString() {
-        return(rb.getString("SolarisNumericUserPrincipal.") + name);
+        return(getAuthResourceString("SolarisNumericUserPrincipal.") + name);
     }
 
     /**
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/SolarisPrincipal.java	Mon Jan 23 07:34:11 2017 -0500
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/SolarisPrincipal.java	Mon Jan 23 07:36:05 2017 -0500
@@ -26,6 +26,8 @@
 package com.sun.security.auth;
 
 import java.security.Principal;
+import static sun.security.util.ResourcesMgr.getAuthResourceString;
+
 
 /**
  * This class implements the {@code Principal} interface
@@ -50,10 +52,6 @@
 
     private static final long serialVersionUID = -7840670002439379038L;
 
-    private static final java.util.ResourceBundle rb =
-        java.util.ResourceBundle.getBundle("sun.security.util.AuthResources");
-
-
     /**
      * @serial
      */
@@ -69,7 +67,7 @@
      */
     public SolarisPrincipal(String name) {
         if (name == null)
-            throw new NullPointerException(rb.getString("provided.null.name"));
+            throw new NullPointerException(getAuthResourceString("provided.null.name"));
 
         this.name = name;
     }
@@ -89,7 +87,7 @@
      * @return a string representation of this {@code SolarisPrincipal}.
      */
     public String toString() {
-        return(rb.getString("SolarisPrincipal.") + name);
+        return(getAuthResourceString("SolarisPrincipal.") + name);
     }
 
     /**
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/UnixNumericGroupPrincipal.java	Mon Jan 23 07:34:11 2017 -0500
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/UnixNumericGroupPrincipal.java	Mon Jan 23 07:36:05 2017 -0500
@@ -74,9 +74,8 @@
     public UnixNumericGroupPrincipal(String name, boolean primaryGroup) {
         if (name == null) {
             java.text.MessageFormat form = new java.text.MessageFormat
-                (sun.security.util.ResourcesMgr.getString
-                        ("invalid.null.input.value",
-                        "sun.security.util.AuthResources"));
+                (sun.security.util.ResourcesMgr.getAuthResourceString
+                        ("invalid.null.input.value"));
             Object[] source = {"name"};
             throw new NullPointerException(form.format(source));
         }
@@ -146,16 +145,14 @@
 
         if (primaryGroup) {
             java.text.MessageFormat form = new java.text.MessageFormat
-                (sun.security.util.ResourcesMgr.getString
-                        ("UnixNumericGroupPrincipal.Primary.Group.name",
-                        "sun.security.util.AuthResources"));
+                (sun.security.util.ResourcesMgr.getAuthResourceString
+                        ("UnixNumericGroupPrincipal.Primary.Group.name"));
             Object[] source = {name};
             return form.format(source);
         } else {
             java.text.MessageFormat form = new java.text.MessageFormat
-                (sun.security.util.ResourcesMgr.getString
-                    ("UnixNumericGroupPrincipal.Supplementary.Group.name",
-                    "sun.security.util.AuthResources"));
+                (sun.security.util.ResourcesMgr.getAuthResourceString
+                    ("UnixNumericGroupPrincipal.Supplementary.Group.name"));
             Object[] source = {name};
             return form.format(source);
         }
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/UnixNumericUserPrincipal.java	Mon Jan 23 07:34:11 2017 -0500
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/UnixNumericUserPrincipal.java	Mon Jan 23 07:36:05 2017 -0500
@@ -64,9 +64,8 @@
     public UnixNumericUserPrincipal(String name) {
         if (name == null) {
             java.text.MessageFormat form = new java.text.MessageFormat
-                (sun.security.util.ResourcesMgr.getString
-                        ("invalid.null.input.value",
-                        "sun.security.util.AuthResources"));
+                (sun.security.util.ResourcesMgr.getAuthResourceString
+                        ("invalid.null.input.value"));
             Object[] source = {"name"};
             throw new NullPointerException(form.format(source));
         }
@@ -116,9 +115,8 @@
      */
     public String toString() {
         java.text.MessageFormat form = new java.text.MessageFormat
-                (sun.security.util.ResourcesMgr.getString
-                        ("UnixNumericUserPrincipal.name",
-                        "sun.security.util.AuthResources"));
+                (sun.security.util.ResourcesMgr.getAuthResourceString
+                        ("UnixNumericUserPrincipal.name"));
         Object[] source = {name};
         return form.format(source);
     }
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/UnixPrincipal.java	Mon Jan 23 07:34:11 2017 -0500
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/UnixPrincipal.java	Mon Jan 23 07:36:05 2017 -0500
@@ -61,9 +61,8 @@
     public UnixPrincipal(String name) {
         if (name == null) {
             java.text.MessageFormat form = new java.text.MessageFormat
-                (sun.security.util.ResourcesMgr.getString
-                        ("invalid.null.input.value",
-                        "sun.security.util.AuthResources"));
+                (sun.security.util.ResourcesMgr.getAuthResourceString
+                        ("invalid.null.input.value"));
             Object[] source = {"name"};
             throw new NullPointerException(form.format(source));
         }
@@ -87,9 +86,8 @@
      */
     public String toString() {
         java.text.MessageFormat form = new java.text.MessageFormat
-                (sun.security.util.ResourcesMgr.getString
-                        ("UnixPrincipal.name",
-                        "sun.security.util.AuthResources"));
+                (sun.security.util.ResourcesMgr.getAuthResourceString
+                        ("UnixPrincipal.name"));
         Object[] source = {name};
         return form.format(source);
     }
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/X500Principal.java	Mon Jan 23 07:34:11 2017 -0500
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/X500Principal.java	Mon Jan 23 07:36:05 2017 -0500
@@ -27,6 +27,7 @@
 
 import java.security.Principal;
 import sun.security.x509.X500Name;
+import static sun.security.util.ResourcesMgr.getAuthResourceString;
 
 /**
  * This class represents an X.500 {@code Principal}.
@@ -55,9 +56,6 @@
 
     private static final long serialVersionUID = -8222422609431628648L;
 
-    private static final java.util.ResourceBundle rb =
-        java.util.ResourceBundle.getBundle("sun.security.util.AuthResources");
-
     /**
      * @serial
      */
@@ -80,7 +78,7 @@
      */
     public X500Principal(String name) {
         if (name == null)
-            throw new NullPointerException(rb.getString("provided.null.name"));
+            throw new NullPointerException(getAuthResourceString("provided.null.name"));
 
         try {
             thisX500Name = new X500Name(name);
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/JndiLoginModule.java	Mon Jan 23 07:34:11 2017 -0500
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/JndiLoginModule.java	Mon Jan 23 07:36:05 2017 -0500
@@ -32,15 +32,13 @@
 import javax.naming.*;
 import javax.naming.directory.*;
 
-import java.security.AccessController;
-import java.security.PrivilegedAction;
 import java.util.Map;
 import java.util.LinkedList;
-import java.util.ResourceBundle;
 
 import com.sun.security.auth.UnixPrincipal;
 import com.sun.security.auth.UnixNumericUserPrincipal;
 import com.sun.security.auth.UnixNumericGroupPrincipal;
+import static sun.security.util.ResourcesMgr.getAuthResourceString;
 
 
 /**
@@ -153,9 +151,6 @@
  */
 public class JndiLoginModule implements LoginModule {
 
-    private static final ResourceBundle rb =
-        ResourceBundle.getBundle("sun.security.util.AuthResources");
-
     /** JNDI Provider */
     public final String USER_PROVIDER = "user.provider.url";
     public final String GROUP_PROVIDER = "group.provider.url";
@@ -677,9 +672,9 @@
 
         Callback[] callbacks = new Callback[2];
         callbacks[0] = new NameCallback(protocol + " "
-                                            + rb.getString("username."));
+                                            + getAuthResourceString("username."));
         callbacks[1] = new PasswordCallback(protocol + " " +
-                                                rb.getString("password."),
+                                                getAuthResourceString("password."),
                                             false);
 
         try {
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/KeyStoreLoginModule.java	Mon Jan 23 07:34:11 2017 -0500
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/KeyStoreLoginModule.java	Mon Jan 23 07:36:05 2017 -0500
@@ -51,6 +51,7 @@
 import javax.security.auth.spi.LoginModule;
 
 import sun.security.util.Password;
+import static sun.security.util.ResourcesMgr.getAuthResourceString;
 
 /**
  * Provides a JAAS login module that prompts for a key store alias and
@@ -112,9 +113,6 @@
  */
 public class KeyStoreLoginModule implements LoginModule {
 
-    private static final ResourceBundle rb =
-        ResourceBundle.getBundle("sun.security.util.AuthResources");
-
     /* -- Fields -- */
 
     private static final int UNINITIALIZED = 0;
@@ -132,7 +130,7 @@
     private static final TextOutputCallback bannerCallback =
                 new TextOutputCallback
                         (TextOutputCallback.INFORMATION,
-                        rb.getString("Please.enter.keystore.information"));
+                        getAuthResourceString("Please.enter.keystore.information"));
     private final ConfirmationCallback confirmationCallback =
                 new ConfirmationCallback
                         (ConfirmationCallback.INFORMATION,
@@ -344,11 +342,10 @@
 
             NameCallback aliasCallback;
             if (keyStoreAlias == null || keyStoreAlias.length() == 0) {
-                aliasCallback = new NameCallback(
-                                        rb.getString("Keystore.alias."));
+                aliasCallback = new NameCallback(getAuthResourceString("Keystore.alias."));
             } else {
                 aliasCallback =
-                    new NameCallback(rb.getString("Keystore.alias."),
+                    new NameCallback(getAuthResourceString("Keystore.alias."),
                                      keyStoreAlias);
             }
 
@@ -360,11 +357,11 @@
                 break;
             case NORMAL:
                 keyPassCallback = new PasswordCallback
-                    (rb.getString("Private.key.password.optional."), false);
+                    (getAuthResourceString("Private.key.password.optional."), false);
                 // fall thru
             case TOKEN:
                 storePassCallback = new PasswordCallback
-                    (rb.getString("Keystore.password."), false);
+                    (getAuthResourceString("Keystore.password."), false);
                 break;
             }
             prompt(aliasCallback, storePassCallback, keyPassCallback);
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/Krb5LoginModule.java	Mon Jan 23 07:34:11 2017 -0500
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/Krb5LoginModule.java	Mon Jan 23 07:36:05 2017 -0500
@@ -27,8 +27,6 @@
 package com.sun.security.auth.module;
 
 import java.io.*;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
 import java.text.MessageFormat;
 import java.util.*;
 
@@ -45,6 +43,7 @@
 import sun.security.jgss.krb5.Krb5Util;
 import sun.security.krb5.Credentials;
 import sun.security.util.HexDumpEncoder;
+import static sun.security.util.ResourcesMgr.getAuthResourceString;
 
 /**
  * This {@code LoginModule} authenticates users using
@@ -419,8 +418,6 @@
 
     private static final String NAME = "javax.security.auth.login.name";
     private static final String PWD = "javax.security.auth.login.password";
-    private static final ResourceBundle rb =
-        ResourceBundle.getBundle("sun.security.util.AuthResources");
 
     /**
      * Initialize this {@code LoginModule}.
@@ -831,7 +828,7 @@
 
                 Callback[] callbacks = new Callback[1];
                 MessageFormat form = new MessageFormat(
-                                       rb.getString(
+                                       getAuthResourceString(
                                        "Kerberos.username.defUsername."));
                 Object[] source =  {defUsername};
                 callbacks[0] = new NameCallback(form.format(source));
@@ -886,7 +883,7 @@
                 Callback[] callbacks = new Callback[1];
                 String userName = krb5PrincName.toString();
                 MessageFormat form = new MessageFormat(
-                                         rb.getString(
+                                         getAuthResourceString(
                                          "Kerberos.password.for.username."));
                 Object[] source = {userName};
                 callbacks[0] = new PasswordCallback(
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/LdapLoginModule.java	Mon Jan 23 07:34:11 2017 -0500
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/LdapLoginModule.java	Mon Jan 23 07:36:05 2017 -0500
@@ -25,14 +25,11 @@
 
 package com.sun.security.auth.module;
 
-import java.security.AccessController;
 import java.net.SocketPermission;
 import java.security.Principal;
-import java.security.PrivilegedAction;
 import java.util.Arrays;
 import java.util.Hashtable;
 import java.util.Map;
-import java.util.ResourceBundle;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.Set;
@@ -47,6 +44,7 @@
 
 import com.sun.security.auth.LdapPrincipal;
 import com.sun.security.auth.UserPrincipal;
+import static sun.security.util.ResourcesMgr.getAuthResourceString;
 
 
 /**
@@ -305,10 +303,6 @@
  */
 public class LdapLoginModule implements LoginModule {
 
-    // Use the default classloader for this class to load the prompt strings.
-    private static final ResourceBundle rb =
-        ResourceBundle.getBundle("sun.security.util.AuthResources");
-
     // Keys to retrieve the stored username and password
     private static final String USERNAME_KEY = "javax.security.auth.login.name";
     private static final String PASSWORD_KEY =
@@ -957,8 +951,8 @@
                 "to acquire authentication information from the user");
 
         Callback[] callbacks = new Callback[2];
-        callbacks[0] = new NameCallback(rb.getString("username."));
-        callbacks[1] = new PasswordCallback(rb.getString("password."), false);
+        callbacks[0] = new NameCallback(getAuthResourceString("username."));
+        callbacks[1] = new PasswordCallback(getAuthResourceString("password."), false);
 
         try {
             callbackHandler.handle(callbacks);
--- a/jdk/src/jdk.security.auth/share/classes/module-info.java	Mon Jan 23 07:34:11 2017 -0500
+++ b/jdk/src/jdk.security.auth/share/classes/module-info.java	Mon Jan 23 07:36:05 2017 -0500
@@ -36,8 +36,6 @@
     exports com.sun.security.auth.login;
     exports com.sun.security.auth.module;
 
-    uses sun.security.util.AuthResourcesProvider;
-
     provides javax.security.auth.spi.LoginModule with
         com.sun.security.auth.module.Krb5LoginModule,
         com.sun.security.auth.module.UnixLoginModule,
--- a/jdk/src/linux/doc/man/ja/jvisualvm.1	Mon Jan 23 07:34:11 2017 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,126 +0,0 @@
-'\" t
-.\"
-.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-.\"
-.\" This code is free software; you can redistribute it and/or modify it
-.\" under the terms of the GNU General Public License version 2 only, as
-.\" published by the Free Software Foundation.
-.\"
-.\" This code is distributed in the hope that it will be useful, but WITHOUT
-.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-.\" FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-.\" version 2 for more details (a copy is included in the LICENSE file that
-.\" accompanied this code).
-.\"
-.\" You should have received a copy of the GNU General Public License version
-.\" 2 along with this work; if not, write to the Free Software Foundation,
-.\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-.\"
-.\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-.\" or visit www.oracle.com if you need additional information or have any
-.\" questions.
-.\"
-.\" Title: jvisualvm
-.\" Language: Japanese
-.\" Date: 2013年11月21日
-.\" SectDesc: Javaトラブルシューティング、プロファイリング、モニタリングおよび管理ツール
-.\" Software: JDK 8
-.\" Arch: 汎用
-.\" Part Number: E58103-01
-.\" Doc ID: JSSON
-.\"
-.if n .pl 99999
-.TH "jvisualvm" "1" "2013年11月21日" "JDK 8" "Javaトラブルシューティング、プロファイリング、モニタリン"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "名前"
-jvisualvm \- Javaアプリケーションを視覚的にモニター、トラブルシュートおよびプロファイルします。
-.SH "概要"
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fBjvisualvm\fR [ \fIoptions\fR ]
-.fi
-.if n \{\
-.RE
-.\}
-.PP
-\fIoptions\fR
-.RS 4
-コマンド行オプション。オプションを参照してください。
-.RE
-.SH "説明"
-.PP
-Java VisualVMは、指定されたJava Virtual Machine (JVM)でJavaテクノロジ・ベースのアプリケーション(Javaアプリケーション)が実行されているときに、そのJavaアプリケーションに関する詳細な情報を提供する直感的なグラフィカル・ユーザー・インタフェースです。Java VisualVMという名前は、Java VisualVMがJVMソフトウェアに関する情報を視覚的に提供するという事実に由来しています。
-.PP
-Java VisualVMは、いくつかのモニタリング、トラブルシューティングおよびプロファイリング・ユーティリティを1つのツールに統合します。たとえば、スタンドアロン・ツール\fBjmap\fR、\fBjinfo\fR、\fBjstat\fRおよび\fBjstack\fRで提供されている機能のほとんどが、Java VisualVMに組み込まれています。\fBjconsole\fRコマンドによって提供される一部の機能など、他の機能はオプションのプラグインとして追加できます。
-.PP
-Java VisualVMは、Javaアプリケーションの開発者がアプリケーションのトラブルシューティングを行ったり、アプリケーションのパフォーマンスをモニターおよび改善したりするのに役立ちます。Java VisualVMを使用すると、開発者はヒープ・ダンプの生成および解析、メモリー・リークの特定、ガベージ・コレクションの実行およびモニター、およびメモリーとCPUの簡易プロファイリングの実行が可能になります。プラグインでJava VisualVMの機能を拡張できます。たとえば、\fBjconsole\fRコマンドのほとんどの機能は、「MBean」タブおよびJConsole Plug\-in Wrapperプラグインを介して使用できます。標準のJava VisualVMプラグインのカタログから選択するには、Java VisualVMメニューの\fB「ツール」\fR、\fB「プラグイン」\fRを選択します。
-.PP
-Java VisualVMを起動するには、次のコマンドを実行します。
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB%  jvisualvm <options>\fR
- 
-.fi
-.if n \{\
-.RE
-.\}
-.SH "オプション"
-.PP
-次のオプションは、Java VisualVMを起動したときに実行可能になります。
-.PP
-\-J\fIjvm_option\fR
-.RS 4
-この\fBjvm_option\fRをJVMソフトウェアに渡します。
-.RE
-.SH "関連項目"
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Java VisualVM開発者のサイト
-http://visualvm\&.java\&.net/
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Java SEドキュメントのJava VisualVM
-(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/visualvm/index\&.html)
-.RE
-.br
-'pl 8.5i
-'bp
--- a/jdk/src/linux/doc/man/jvisualvm.1	Mon Jan 23 07:34:11 2017 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-." Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
-." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-."
-." This code is free software; you can redistribute it and/or modify it
-." under the terms of the GNU General Public License version 2 only, as
-." published by the Free Software Foundation.
-."
-." This code is distributed in the hope that it will be useful, but WITHOUT
-." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-." FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-." version 2 for more details (a copy is included in the LICENSE file that
-." accompanied this code).
-."
-." You should have received a copy of the GNU General Public License version
-." 2 along with this work; if not, write to the Free Software Foundation,
-." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-."
-." Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-." or visit www.oracle.com if you need additional information or have any
-." questions.
-."
-.TH jvisualvm 1 "10 May 2011"
-
-.LP
-.SH "Name"
-\f2jvisualvm\fP \- Java Virtual Machine Monitoring, Troubleshooting, and Profiling Tool
-.LP
-.SH "SYNOPSIS"
-.LP
-.nf
-\f3
-.fl
-        \fP\f3jvisualvm\fP [ \f2options\fP ]
-.fl
-.fi
-
-.LP
-.SH "PARAMETERS"
-.LP
-.LP
-Options, if used, should follow immediately after the command name. Options may be in any order. For a discussion of parameters that apply to a specific option, see OPTIONS below.
-.LP
-.SH "DESCRIPTION"
-.LP
-.LP
-Java VisualVM is an intuitive graphical user interface that provides detailed information about Java technology\-based applications (Java applications) while they are running on a given Java Virtual Machine (JVM(*)). The name Java VisualVM comes from the fact that Java VisualVM provides information about the JVM software \f2visually\fP.
-.LP
-.LP
-Java VisualVM combines several monitoring, troubleshooting, and profiling utilities into a single tool. For example, most of the functionality offered by the standalone tools \f2jmap\fP, \f2jinfo\fP, \f2jstat\fP and \f2jstack\fP have been integrated into Java VisualVM. Other functionalities, such as some of those offered by the JConsole tool, can be added as optional plug\-ins.
-.LP
-.SH "OPTIONS"
-.LP
-.LP
-The following option is possible when you launch Java VisualVM.
-.LP
-.RS 3
-.TP 3
-\-J<jvm_option>\  
-Pass this \f2<jvm_option>\fP to the JVM software. 
-.RE
-
-.LP
-.SH "USAGE"
-.LP
-.LP
-Java VisualVM is useful to Java application developers to troubleshoot applications and to monitor and improve the applications' performance. Java VisualVM can allow developers to generate and analyse heap dumps, track down memory leaks, perform and monitor garbage collection, and perform lightweight memory and CPU profiling. Plug\-ins also exist that expand the functionality of Java VisualVM. For example, most of the functionality of the JConsole tool is available via the MBeans Tab and JConsole Plug\-in Wrapper plug\-ins. You can choose from a catalog of standard Java VisualVM plug\-ins by selecting 'Tools' | 'Plugins' in the Java VisualVM menus.
-.LP
-.LP
-Start Java VisualVM with the following command:
-.LP
-.nf
-\f3
-.fl
-%  jvisualvm \fP\f4<options>\fP\f3
-.fl
-\fP
-.fi
-
-.LP
-.SH "SEE ALSO"
-.LP
-.LP
-For more details about Java VisualVM see the following pages.
-.LP
-.RS 3
-.TP 2
-o
-.na
-\f2Java VisualVM developers' site\fP @
-.fi
-http://visualvm.java.net 
-.TP 2
-o
-.na
-\f2Java VisualVM in Java SE platform documentation\fP @
-.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/visualvm/index.html 
-.RE
-
-.LP
-.LP
-\f2(* The terms "Java Virtual Machine" and "JVM" mean a Virtual Machine for the Java platform.)\fP
-.LP
- 
--- a/jdk/src/solaris/doc/sun/man/man1/ja/jvisualvm.1	Mon Jan 23 07:34:11 2017 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,126 +0,0 @@
-'\" t
-.\"
-.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-.\"
-.\" This code is free software; you can redistribute it and/or modify it
-.\" under the terms of the GNU General Public License version 2 only, as
-.\" published by the Free Software Foundation.
-.\"
-.\" This code is distributed in the hope that it will be useful, but WITHOUT
-.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-.\" FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-.\" version 2 for more details (a copy is included in the LICENSE file that
-.\" accompanied this code).
-.\"
-.\" You should have received a copy of the GNU General Public License version
-.\" 2 along with this work; if not, write to the Free Software Foundation,
-.\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-.\"
-.\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-.\" or visit www.oracle.com if you need additional information or have any
-.\" questions.
-.\"
-.\" Title: jvisualvm
-.\" Language: Japanese
-.\" Date: 2013年11月21日
-.\" SectDesc: Javaトラブルシューティング、プロファイリング、モニタリングおよび管理ツール
-.\" Software: JDK 8
-.\" Arch: 汎用
-.\" Part Number: E58103-01
-.\" Doc ID: JSSON
-.\"
-.if n .pl 99999
-.TH "jvisualvm" "1" "2013年11月21日" "JDK 8" "Javaトラブルシューティング、プロファイリング、モニタリン"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "名前"
-jvisualvm \- Javaアプリケーションを視覚的にモニター、トラブルシュートおよびプロファイルします。
-.SH "概要"
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fBjvisualvm\fR [ \fIoptions\fR ]
-.fi
-.if n \{\
-.RE
-.\}
-.PP
-\fIoptions\fR
-.RS 4
-コマンド行オプション。オプションを参照してください。
-.RE
-.SH "説明"
-.PP
-Java VisualVMは、指定されたJava Virtual Machine (JVM)でJavaテクノロジ・ベースのアプリケーション(Javaアプリケーション)が実行されているときに、そのJavaアプリケーションに関する詳細な情報を提供する直感的なグラフィカル・ユーザー・インタフェースです。Java VisualVMという名前は、Java VisualVMがJVMソフトウェアに関する情報を視覚的に提供するという事実に由来しています。
-.PP
-Java VisualVMは、いくつかのモニタリング、トラブルシューティングおよびプロファイリング・ユーティリティを1つのツールに統合します。たとえば、スタンドアロン・ツール\fBjmap\fR、\fBjinfo\fR、\fBjstat\fRおよび\fBjstack\fRで提供されている機能のほとんどが、Java VisualVMに組み込まれています。\fBjconsole\fRコマンドによって提供される一部の機能など、他の機能はオプションのプラグインとして追加できます。
-.PP
-Java VisualVMは、Javaアプリケーションの開発者がアプリケーションのトラブルシューティングを行ったり、アプリケーションのパフォーマンスをモニターおよび改善したりするのに役立ちます。Java VisualVMを使用すると、開発者はヒープ・ダンプの生成および解析、メモリー・リークの特定、ガベージ・コレクションの実行およびモニター、およびメモリーとCPUの簡易プロファイリングの実行が可能になります。プラグインでJava VisualVMの機能を拡張できます。たとえば、\fBjconsole\fRコマンドのほとんどの機能は、「MBean」タブおよびJConsole Plug\-in Wrapperプラグインを介して使用できます。標準のJava VisualVMプラグインのカタログから選択するには、Java VisualVMメニューの\fB「ツール」\fR、\fB「プラグイン」\fRを選択します。
-.PP
-Java VisualVMを起動するには、次のコマンドを実行します。
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB%  jvisualvm <options>\fR
- 
-.fi
-.if n \{\
-.RE
-.\}
-.SH "オプション"
-.PP
-次のオプションは、Java VisualVMを起動したときに実行可能になります。
-.PP
-\-J\fIjvm_option\fR
-.RS 4
-この\fBjvm_option\fRをJVMソフトウェアに渡します。
-.RE
-.SH "関連項目"
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Java VisualVM開発者のサイト
-http://visualvm\&.java\&.net/
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Java SEドキュメントのJava VisualVM
-(http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/visualvm/index\&.html)
-.RE
-.br
-'pl 8.5i
-'bp
--- a/jdk/src/solaris/doc/sun/man/man1/jvisualvm.1	Mon Jan 23 07:34:11 2017 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-." Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
-." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-."
-." This code is free software; you can redistribute it and/or modify it
-." under the terms of the GNU General Public License version 2 only, as
-." published by the Free Software Foundation.
-."
-." This code is distributed in the hope that it will be useful, but WITHOUT
-." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-." FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-." version 2 for more details (a copy is included in the LICENSE file that
-." accompanied this code).
-."
-." You should have received a copy of the GNU General Public License version
-." 2 along with this work; if not, write to the Free Software Foundation,
-." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-."
-." Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-." or visit www.oracle.com if you need additional information or have any
-." questions.
-."
-.TH jvisualvm 1 "10 May 2011"
-
-.LP
-.SH "Name"
-\f2jvisualvm\fP \- Java Virtual Machine Monitoring, Troubleshooting, and Profiling Tool
-.LP
-.SH "SYNOPSIS"
-.LP
-.nf
-\f3
-.fl
-        \fP\f3jvisualvm\fP [ \f2options\fP ]
-.fl
-.fi
-
-.LP
-.SH "PARAMETERS"
-.LP
-.LP
-Options, if used, should follow immediately after the command name. Options may be in any order. For a discussion of parameters that apply to a specific option, see OPTIONS below.
-.LP
-.SH "DESCRIPTION"
-.LP
-.LP
-Java VisualVM is an intuitive graphical user interface that provides detailed information about Java technology\-based applications (Java applications) while they are running on a given Java Virtual Machine (JVM(*)). The name Java VisualVM comes from the fact that Java VisualVM provides information about the JVM software \f2visually\fP.
-.LP
-.LP
-Java VisualVM combines several monitoring, troubleshooting, and profiling utilities into a single tool. For example, most of the functionality offered by the standalone tools \f2jmap\fP, \f2jinfo\fP, \f2jstat\fP and \f2jstack\fP have been integrated into Java VisualVM. Other functionalities, such as some of those offered by the JConsole tool, can be added as optional plug\-ins.
-.LP
-.SH "OPTIONS"
-.LP
-.LP
-The following option is possible when you launch Java VisualVM.
-.LP
-.RS 3
-.TP 3
-\-J<jvm_option>\  
-Pass this \f2<jvm_option>\fP to the JVM software. 
-.RE
-
-.LP
-.SH "USAGE"
-.LP
-.LP
-Java VisualVM is useful to Java application developers to troubleshoot applications and to monitor and improve the applications' performance. Java VisualVM can allow developers to generate and analyse heap dumps, track down memory leaks, perform and monitor garbage collection, and perform lightweight memory and CPU profiling. Plug\-ins also exist that expand the functionality of Java VisualVM. For example, most of the functionality of the JConsole tool is available via the MBeans Tab and JConsole Plug\-in Wrapper plug\-ins. You can choose from a catalog of standard Java VisualVM plug\-ins by selecting 'Tools' | 'Plugins' in the Java VisualVM menus.
-.LP
-.LP
-Start Java VisualVM with the following command:
-.LP
-.nf
-\f3
-.fl
-%  jvisualvm \fP\f4<options>\fP\f3
-.fl
-\fP
-.fi
-
-.LP
-.SH "SEE ALSO"
-.LP
-.LP
-For more details about Java VisualVM see the following pages.
-.LP
-.RS 3
-.TP 2
-o
-.na
-\f2Java VisualVM developers' site\fP @
-.fi
-http://visualvm.java.net 
-.TP 2
-o
-.na
-\f2Java VisualVM in Java SE platform documentation\fP @
-.fi
-http://download.oracle.com/javase/7/docs/technotes/guides/visualvm/index.html 
-.RE
-
-.LP
-.LP
-\f2(* The terms "Java Virtual Machine" and "JVM" mean a Virtual Machine for the Java platform.)\fP
-.LP
- 
--- a/jdk/test/tools/launcher/VersionCheck.java	Mon Jan 23 07:34:11 2017 -0500
+++ b/jdk/test/tools/launcher/VersionCheck.java	Mon Jan 23 07:36:05 2017 -0500
@@ -58,7 +58,6 @@
         "jmc",
         "jmc.ini",
         "jweblauncher",
-        "jvisualvm",
         "packager",
         "ssvagent",
         "unpack200",
@@ -100,7 +99,6 @@
         "jstat",
         "jstatd",
         "jweblauncher",
-        "jvisualvm",
         "keytool",
         "kinit",
         "klist",